diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c2f813a..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,31 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "gomod" - directory: "/" - schedule: - interval: "weekly" - allow: - - dependency-type: "direct" - - package-ecosystem: "gomod" - directory: "/provisioner" - schedule: - interval: "weekly" - allow: - - dependency-type: "direct" - - package-ecosystem: "gomod" - directory: "/device-operator" - schedule: - interval: "weekly" - allow: - - dependency-type: "direct" - - package-ecosystem: "gomod" - directory: "/device-subscriber" - schedule: - interval: "weekly" - allow: - - dependency-type: "direct" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 339e4fc..4b2898e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,38 +4,48 @@ on: branches: - main pull_request: - branches: - - main + +env: + LD_LIBRARY_PATH: /home/runner/work/ksot/ksot/nb-server/lib jobs: goreleaser: runs-on: ubuntu-latest env: - GO_VERSION: 1.18 - IMAGE_REGISTRY: ghcr.io/nttcom/kuesta + GO_VERSION: 1.21 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 + submodules: recursive + + - name: bulid libyang + run: | + cd nb-server/libyang + mkdir build; cd build + echo "/home/runner/work/ksot/ksot/nb-server/bin" >> $GITHUB_PATH + cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/runner/work/ksot/ksot/nb-server .. + make + make install - name: Setup Go uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: go + - name: Test nb-server + run: | + cd nb-server + go test ./... + + - name: Test github-server + run: | + cd github-server + go test ./... - name: Run GoReleaser uses: goreleaser/goreleaser-action@v4 with: version: latest - args: release --snapshot --rm-dist - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:go" \ No newline at end of file + args: release --snapshot --clean \ No newline at end of file diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 16181b0..3cf6280 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -16,29 +16,17 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.21 - uses: actions/checkout@v3 - - name: golangci-lint-kuesta + - name: golangci-lint-nb-server uses: golangci/golangci-lint-action@v3 with: version: latest - working-directory: . + working-directory: ./nb-server args: --timeout 3m0s - - name: golangci-lint-provisioner + - name: golangci-lint-github-server uses: golangci/golangci-lint-action@v3 with: version: latest - working-directory: ./provisioner - args: --timeout 3m0s - - name: golangci-lint-device-operator - uses: golangci/golangci-lint-action@v3 - with: - version: latest - working-directory: ./device-operator - args: --timeout 3m0s - - name: golangci-lint-device-subscriber - uses: golangci/golangci-lint-action@v3 - with: - version: latest - working-directory: ./device-subscriber - args: --timeout 3m0s + working-directory: ./github-server + args: --timeout 3m0s \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index e28edf4..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: release -on: - push: - tags: - - "v[0-9]+.[0-9]+.[0-9]+" - -jobs: - goreleaser: - runs-on: ubuntu-latest - env: - GO_VERSION: 1.18 - IMAGE_REGISTRY: ghcr.io/nttcom/kuesta - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ github.token }} - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 - with: - version: latest - args: release --rm-dist - env: - GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 48da247..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: test - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - gotest: - name: Format Check, Analysis and Unit Test - - strategy: - matrix: - go-version: [1.18] - os: [ubuntu-latest, macos-latest] - fail-fast: false - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Go - uses: actions/setup-go@v3 - with: - go-version: ${{ matrix.go-version }} - - - name: Use cache - uses: actions/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Run Test - run: | - make test-all - git diff --exit-code \ No newline at end of file diff --git a/.gitignore b/.gitignore index d425cf2..73bc615 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,11 @@ *.dll *.so *.dylib +*.sh # Test binary, built with `go test -c` *.test +*.DS_Store # Output of the go coverage tool, specifically when used with LiteIDE *.out @@ -20,7 +22,15 @@ cover.html # Binary dependencies bin +env # Environment variables .env* dist/ + +# other +sb-server/__pycache__ +sb-server/devices/ +sb-server/connect.json +sb-server/.DS_Store +nb-server/pkg/tf/yang diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..628db74 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "nb-server/libyang"] + path = nb-server/libyang + url = git@github.com:CESNET/libyang.git diff --git a/.golangci.yml b/.golangci.yml index b3a6b2f..d1852c3 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -17,8 +17,13 @@ linters: - unconvert - whitespace linters-settings: + gosec: + excludes: + - G204 gocognit: - min-complexity: 20 + min-complexity: 40 + nestif: + min-complexity: 40 exhaustive: default-signifies-exhaustive: true issues: @@ -32,4 +37,6 @@ issues: - gosec run: skip-files: - - generated.go \ No newline at end of file + - generated.go + skip-dirs: + - xml \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml index ac3bf0e..276a4b7 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,12 +1,9 @@ # This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com -before: - hooks: - - go mod tidy builds: - - id: kuesta - binary: kuesta - main: . + - id: nb-server + binary: nb-server + dir: ./nb-server env: - CGO_ENABLED=0 goos: @@ -15,125 +12,15 @@ builds: goarch: - amd64 - arm64 - flags: - - -trimpath - ldflags: - - -w -s - - -X github.com/nttcom/kuesta/cmd.date={{.Date}} - - -X github.com/nttcom/kuesta/cmd.version={{.Version}} - - -X github.com/nttcom/kuesta/cmd.commit={{.FullCommit}} - - id: kuesta-provisioner - binary: provisioner - dir: ./provisioner - env: - - CGO_ENABLED=0 - goos: - - linux - goarch: - - amd64 - flags: - - -trimpath - - id: device-operator - binary: device-operator - dir: ./device-operator - env: - - CGO_ENABLED=0 - goos: - - linux - goarch: - - amd64 - flags: - - -trimpath - - id: device-subscriber - binary: device-subscriber - dir: ./device-subscriber + + - id: github-server + binary: github-server + dir: ./github-server env: - CGO_ENABLED=0 goos: - linux + - darwin goarch: - amd64 - flags: - - -trimpath -release: - prerelease: "true" -archives: - - builds: - - kuesta - files: - - LICENSE - - CREDITS - - README.md -checksum: - name_template: 'checksums.txt' -snapshot: - name_template: "{{ incpatch .Version }}-next" -changelog: - sort: asc - filters: - exclude: - - '^docs:' - - '^test:' - - '^misc:' - - '^chore:' - - '^ci:' - - '^manifest:' - - '^refactor:' - -dockers: - - id: kuesta - dockerfile: "build/Dockerfile.goreleaser.kuesta" - image_templates: - - "{{ .Env.IMAGE_REGISTRY }}/kuesta:latest" - - "{{ .Env.IMAGE_REGISTRY }}/kuesta:{{ .Tag }}" - - "{{ .Env.IMAGE_REGISTRY }}/kuesta:{{ .FullCommit }}" - use: docker - build_flag_templates: - - "--pull" - - "--label=org.opencontainers.image.source=https://github.com/nttcom/kuesta" - - "--label=org.opencontainers.image.created={{ .Date }}" - - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - - "--label=org.opencontainers.image.version={{ .Version }}" - - - id: kuesta-provisioner - dockerfile: "build/Dockerfile.goreleaser.provisioner" - image_templates: - - "{{ .Env.IMAGE_REGISTRY }}/provisioner:latest" - - "{{ .Env.IMAGE_REGISTRY }}/provisioner:{{ .Tag }}" - - "{{ .Env.IMAGE_REGISTRY }}/provisioner:{{ .FullCommit }}" - use: docker - build_flag_templates: - - "--pull" - - "--label=org.opencontainers.image.source=https://github.com/nttcom/kuesta" - - "--label=org.opencontainers.image.created={{ .Date }}" - - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - - "--label=org.opencontainers.image.version={{ .Version }}" - - - id: device-operator - dockerfile: "build/Dockerfile.goreleaser.device-operator" - image_templates: - - "{{ .Env.IMAGE_REGISTRY }}/device-operator:latest" - - "{{ .Env.IMAGE_REGISTRY }}/device-operator:{{ .Tag }}" - - "{{ .Env.IMAGE_REGISTRY }}/device-operator:{{ .FullCommit }}" - use: docker - build_flag_templates: - - "--pull" - - "--label=org.opencontainers.image.source=https://github.com/nttcom/kuesta" - - "--label=org.opencontainers.image.created={{ .Date }}" - - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - - "--label=org.opencontainers.image.version={{ .Version }}" - - - id: device-subscriber - dockerfile: "build/Dockerfile.goreleaser.device-subscriber" - image_templates: - - "{{ .Env.IMAGE_REGISTRY }}/device-subscriber:latest" - - "{{ .Env.IMAGE_REGISTRY }}/device-subscriber:{{ .Tag }}" - - "{{ .Env.IMAGE_REGISTRY }}/device-subscriber:{{ .FullCommit }}" - use: docker - build_flag_templates: - - "--pull" - - "--label=org.opencontainers.image.source=https://github.com/nttcom/kuesta" - - "--label=org.opencontainers.image.created={{ .Date }}" - - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - - "--label=org.opencontainers.image.version={{ .Version }}" - + - arm64 \ No newline at end of file diff --git a/CREDITS b/CREDITS deleted file mode 100644 index a58db98..0000000 --- a/CREDITS +++ /dev/null @@ -1,10213 +0,0 @@ -Go (the standard library) -https://golang.org/ ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -cuelang.org/go -https://cuelang.org/go ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/Microsoft/go-winio -https://github.com/Microsoft/go-winio ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2015 Microsoft - -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. - - -================================================================ - -github.com/ProtonMail/go-crypto -https://github.com/ProtonMail/go-crypto ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/anmitsu/go-shlex -https://github.com/anmitsu/go-shlex ----------------------------------------------------------------- -Copyright (c) anmitsu - -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. - -================================================================ - -github.com/armon/go-socks5 -https://github.com/armon/go-socks5 ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Armon Dadgar - -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. - -================================================================ - -github.com/benbjohnson/clock -https://github.com/benbjohnson/clock ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Ben Johnson - -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. - -================================================================ - -github.com/cenkalti/backoff/v4 -https://github.com/cenkalti/backoff/v4 ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Cenk Altı - -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. - -================================================================ - -github.com/cockroachdb/apd -https://github.com/cockroachdb/apd ----------------------------------------------------------------- -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 {} - - 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. - - -================================================================ - -github.com/cockroachdb/apd/v2 -https://github.com/cockroachdb/apd/v2 ----------------------------------------------------------------- -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 {} - - 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. - - -================================================================ - -github.com/davecgh/go-spew -https://github.com/davecgh/go-spew ----------------------------------------------------------------- -ISC License - -Copyright (c) 2012-2016 Dave Collins - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -================================================================ - -github.com/emicklei/proto -https://github.com/emicklei/proto ----------------------------------------------------------------- -Copyright (c) 2017 Ernest Micklei - -MIT License - -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. -================================================================ - -github.com/emirpasic/gods -https://github.com/emirpasic/gods ----------------------------------------------------------------- -Copyright (c) 2015, Emir Pasic -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. - -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. - -------------------------------------------------------------------------------- - -AVL Tree: - -Copyright (c) 2017 Benjamin Scher Purcell - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -================================================================ - -github.com/fluxcd/pkg/apis/acl -https://github.com/fluxcd/pkg/apis/acl ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/fluxcd/pkg/apis/meta -https://github.com/fluxcd/pkg/apis/meta ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/fluxcd/pkg/untar -https://github.com/fluxcd/pkg/untar ----------------------------------------------------------------- -Copyright (c) 2017 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/fluxcd/source-controller/api -https://github.com/fluxcd/source-controller/api ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/frankban/quicktest -https://github.com/frankban/quicktest ----------------------------------------------------------------- -MIT License - -Copyright (c) 2017 Canonical Ltd. - -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. - -================================================================ - -github.com/fsnotify/fsnotify -https://github.com/fsnotify/fsnotify ----------------------------------------------------------------- -Copyright (c) 2012 The Go Authors. All rights reserved. -Copyright (c) 2012-2019 fsnotify Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/gliderlabs/ssh -https://github.com/gliderlabs/ssh ----------------------------------------------------------------- -Copyright (c) 2016 Glider Labs. 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 Glider Labs nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/go-git/gcfg -https://github.com/go-git/gcfg ----------------------------------------------------------------- -Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go -Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/go-git/go-billy/v5 -https://github.com/go-git/go-billy/v5 ----------------------------------------------------------------- - 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 2017 Sourced Technologies S.L. - - 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. - -================================================================ - -github.com/go-git/go-git-fixtures/v4 -https://github.com/go-git/go-git-fixtures/v4 ----------------------------------------------------------------- - 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 2017 Sourced Technologies, S.L. - - 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. - -================================================================ - -github.com/go-git/go-git/v5 -https://github.com/go-git/go-git/v5 ----------------------------------------------------------------- - 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 2018 Sourced Technologies, S.L. - - 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. - -================================================================ - -github.com/go-logr/logr -https://github.com/go-logr/logr ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/go-playground/assert/v2 -https://github.com/go-playground/assert/v2 ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2015 Dean Karn - -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. - - -================================================================ - -github.com/go-playground/locales -https://github.com/go-playground/locales ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2016 Go Playground - -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. -================================================================ - -github.com/go-playground/universal-translator -https://github.com/go-playground/universal-translator ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2016 Go Playground - -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. - -================================================================ - -github.com/go-playground/validator/v10 -https://github.com/go-playground/validator/v10 ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2015 Dean Karn - -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. - - -================================================================ - -github.com/gogo/protobuf -https://github.com/gogo/protobuf ----------------------------------------------------------------- -Copyright (c) 2013, The GoGo Authors. All rights reserved. - -Protocol Buffers for Go with Gadgets - -Go support for Protocol Buffers - Google's data interchange format - -Copyright 2010 The Go Authors. All rights reserved. -https://github.com/golang/protobuf - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -================================================================ - -github.com/golang/glog -https://github.com/golang/glog ----------------------------------------------------------------- -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: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -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 -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. - -================================================================ - -github.com/golang/mock -https://github.com/golang/mock ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/golang/protobuf -https://github.com/golang/protobuf ----------------------------------------------------------------- -Copyright 2010 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -================================================================ - -github.com/google/go-cmp -https://github.com/google/go-cmp ----------------------------------------------------------------- -Copyright (c) 2017 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/google/gofuzz -https://github.com/google/gofuzz ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/google/uuid -https://github.com/google/uuid ----------------------------------------------------------------- -Copyright (c) 2009,2014 Google Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/hashicorp/hcl -https://github.com/hashicorp/hcl ----------------------------------------------------------------- -Mozilla Public License, version 2.0 - -1. Definitions - -1.1. “Contributor” - - means each individual or legal entity that creates, contributes to the - creation of, or owns Covered Software. - -1.2. “Contributor Version” - - means the combination of the Contributions of others (if any) used by a - Contributor and that particular Contributor’s Contribution. - -1.3. “Contribution” - - means Covered Software of a particular Contributor. - -1.4. “Covered Software” - - means Source Code Form to which the initial Contributor has attached the - notice in Exhibit A, the Executable Form of such Source Code Form, and - Modifications of such Source Code Form, in each case including portions - thereof. - -1.5. “Incompatible With Secondary Licenses” - means - - a. that the initial Contributor has attached the notice described in - Exhibit B to the Covered Software; or - - b. that the Covered Software was made available under the terms of version - 1.1 or earlier of the License, but not also under the terms of a - Secondary License. - -1.6. “Executable Form” - - means any form of the work other than Source Code Form. - -1.7. “Larger Work” - - means a work that combines Covered Software with other material, in a separate - file or files, that is not Covered Software. - -1.8. “License” - - means this document. - -1.9. “Licensable” - - means having the right to grant, to the maximum extent possible, whether at the - time of the initial grant or subsequently, any and all of the rights conveyed by - this License. - -1.10. “Modifications” - - means any of the following: - - a. any file in Source Code Form that results from an addition to, deletion - from, or modification of the contents of Covered Software; or - - b. any new file in Source Code Form that contains any Covered Software. - -1.11. “Patent Claims” of a Contributor - - means any patent claim(s), including without limitation, method, process, - and apparatus claims, in any patent Licensable by such Contributor that - would be infringed, but for the grant of the License, by the making, - using, selling, offering for sale, having made, import, or transfer of - either its Contributions or its Contributor Version. - -1.12. “Secondary License” - - means either the GNU General Public License, Version 2.0, the GNU Lesser - General Public License, Version 2.1, the GNU Affero General Public - License, Version 3.0, or any later versions of those licenses. - -1.13. “Source Code Form” - - means the form of the work preferred for making modifications. - -1.14. “You” (or “Your”) - - means an individual or a legal entity exercising rights under this - License. For legal entities, “You” includes any entity that controls, is - controlled by, or is under common control with You. For purposes of this - definition, “control” means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - -2. License Grants and Conditions - -2.1. Grants - - Each Contributor hereby grants You a world-wide, royalty-free, - non-exclusive license: - - a. under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or as - part of a Larger Work; and - - b. under Patent Claims of such Contributor to make, use, sell, offer for - sale, have made, import, and otherwise transfer either its Contributions - or its Contributor Version. - -2.2. Effective Date - - The licenses granted in Section 2.1 with respect to any Contribution become - effective for each Contribution on the date the Contributor first distributes - such Contribution. - -2.3. Limitations on Grant Scope - - The licenses granted in this Section 2 are the only rights granted under this - License. No additional rights or licenses will be implied from the distribution - or licensing of Covered Software under this License. Notwithstanding Section - 2.1(b) above, no patent license is granted by a Contributor: - - a. for any code that a Contributor has removed from Covered Software; or - - b. for infringements caused by: (i) Your and any other third party’s - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - - c. under Patent Claims infringed by Covered Software in the absence of its - Contributions. - - This License does not grant any rights in the trademarks, service marks, or - logos of any Contributor (except as may be necessary to comply with the - notice requirements in Section 3.4). - -2.4. Subsequent Licenses - - No Contributor makes additional grants as a result of Your choice to - distribute the Covered Software under a subsequent version of this License - (see Section 10.2) or under the terms of a Secondary License (if permitted - under the terms of Section 3.3). - -2.5. Representation - - Each Contributor represents that the Contributor believes its Contributions - are its original creation(s) or it has sufficient rights to grant the - rights to its Contributions conveyed by this License. - -2.6. Fair Use - - This License is not intended to limit any rights You have under applicable - copyright doctrines of fair use, fair dealing, or other equivalents. - -2.7. Conditions - - Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in - Section 2.1. - - -3. Responsibilities - -3.1. Distribution of Source Form - - All distribution of Covered Software in Source Code Form, including any - Modifications that You create or to which You contribute, must be under the - terms of this License. You must inform recipients that the Source Code Form - of the Covered Software is governed by the terms of this License, and how - they can obtain a copy of this License. You may not attempt to alter or - restrict the recipients’ rights in the Source Code Form. - -3.2. Distribution of Executable Form - - If You distribute Covered Software in Executable Form then: - - a. such Covered Software must also be made available in Source Code Form, - as described in Section 3.1, and You must inform recipients of the - Executable Form how they can obtain a copy of such Source Code Form by - reasonable means in a timely manner, at a charge no more than the cost - of distribution to the recipient; and - - b. You may distribute such Executable Form under the terms of this License, - or sublicense it under different terms, provided that the license for - the Executable Form does not attempt to limit or alter the recipients’ - rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - - You may create and distribute a Larger Work under terms of Your choice, - provided that You also comply with the requirements of this License for the - Covered Software. If the Larger Work is a combination of Covered Software - with a work governed by one or more Secondary Licenses, and the Covered - Software is not Incompatible With Secondary Licenses, this License permits - You to additionally distribute such Covered Software under the terms of - such Secondary License(s), so that the recipient of the Larger Work may, at - their option, further distribute the Covered Software under the terms of - either this License or such Secondary License(s). - -3.4. Notices - - You may not remove or alter the substance of any license notices (including - copyright notices, patent notices, disclaimers of warranty, or limitations - of liability) contained within the Source Code Form of the Covered - Software, except that You may alter any license notices to the extent - required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - - You may choose to offer, and to charge a fee for, warranty, support, - indemnity or liability obligations to one or more recipients of Covered - Software. However, You may do so only on Your own behalf, and not on behalf - of any Contributor. You must make it absolutely clear that any such - warranty, support, indemnity, or liability obligation is offered by You - alone, and You hereby agree to indemnify every Contributor for any - liability incurred by such Contributor as a result of warranty, support, - indemnity or liability terms You offer. You may include additional - disclaimers of warranty and limitations of liability specific to any - jurisdiction. - -4. Inability to Comply Due to Statute or Regulation - - If it is impossible for You to comply with any of the terms of this License - with respect to some or all of the Covered Software due to statute, judicial - order, or regulation then You must: (a) comply with the terms of this License - to the maximum extent possible; and (b) describe the limitations and the code - they affect. Such description must be placed in a text file included with all - distributions of the Covered Software under this License. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Termination - -5.1. The rights granted under this License will terminate automatically if You - fail to comply with any of its terms. However, if You become compliant, - then the rights granted under this License from a particular Contributor - are reinstated (a) provisionally, unless and until such Contributor - explicitly and finally terminates Your grants, and (b) on an ongoing basis, - if such Contributor fails to notify You of the non-compliance by some - reasonable means prior to 60 days after You have come back into compliance. - Moreover, Your grants from a particular Contributor are reinstated on an - ongoing basis if such Contributor notifies You of the non-compliance by - some reasonable means, this is the first time You have received notice of - non-compliance with this License from such Contributor, and You become - compliant prior to 30 days after Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent - infringement claim (excluding declaratory judgment actions, counter-claims, - and cross-claims) alleging that a Contributor Version directly or - indirectly infringes any patent, then the rights granted to You by any and - all Contributors for the Covered Software under Section 2.1 of this License - shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user - license agreements (excluding distributors and resellers) which have been - validly granted by You or Your distributors under this License prior to - termination shall survive termination. - -6. Disclaimer of Warranty - - Covered Software is provided under this License on an “as is” basis, without - warranty of any kind, either expressed, implied, or statutory, including, - without limitation, warranties that the Covered Software is free of defects, - merchantable, fit for a particular purpose or non-infringing. The entire - risk as to the quality and performance of the Covered Software is with You. - Should any Covered Software prove defective in any respect, You (not any - Contributor) assume the cost of any necessary servicing, repair, or - correction. This disclaimer of warranty constitutes an essential part of this - License. No use of any Covered Software is authorized under this License - except under this disclaimer. - -7. Limitation of Liability - - Under no circumstances and under no legal theory, whether tort (including - negligence), contract, or otherwise, shall any Contributor, or anyone who - distributes Covered Software as permitted above, be liable to You for any - direct, indirect, special, incidental, or consequential damages of any - character including, without limitation, damages for lost profits, loss of - goodwill, work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses, even if such party shall have been - informed of the possibility of such damages. This limitation of liability - shall not apply to liability for death or personal injury resulting from such - party’s negligence to the extent applicable law prohibits such limitation. - Some jurisdictions do not allow the exclusion or limitation of incidental or - consequential damages, so this exclusion and limitation may not apply to You. - -8. Litigation - - Any litigation relating to this License may be brought only in the courts of - a jurisdiction where the defendant maintains its principal place of business - and such litigation shall be governed by laws of that jurisdiction, without - reference to its conflict-of-law provisions. Nothing in this Section shall - prevent a party’s ability to bring cross-claims or counter-claims. - -9. Miscellaneous - - This License represents the complete agreement concerning the subject matter - hereof. If any provision of this License is held to be unenforceable, such - provision shall be reformed only to the extent necessary to make it - enforceable. Any law or regulation which provides that the language of a - contract shall be construed against the drafter shall not be used to construe - this License against a Contributor. - - -10. Versions of the License - -10.1. New Versions - - Mozilla Foundation is the license steward. Except as provided in Section - 10.3, no one other than the license steward has the right to modify or - publish new versions of this License. Each version will be given a - distinguishing version number. - -10.2. Effect of New Versions - - You may distribute the Covered Software under the terms of the version of - the License under which You originally received the Covered Software, or - under the terms of any subsequent version published by the license - steward. - -10.3. Modified Versions - - If you create software not governed by this License, and you want to - create a new license for such software, you may create and use a modified - version of this License if you rename the license and remove any - references to the name of the license steward (except to note that such - modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - If You choose to distribute Source Code Form that is Incompatible With - Secondary Licenses under the terms of this version of the License, the - notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the - terms of the Mozilla Public License, v. - 2.0. If a copy of the MPL was not - distributed with this file, You can - obtain one at - http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular file, then -You may include the notice in a location (such as a LICENSE file in a relevant -directory) where a recipient would be likely to look for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - “Incompatible With Secondary Licenses” Notice - - This Source Code Form is “Incompatible - With Secondary Licenses”, as defined by - the Mozilla Public License, v. 2.0. - - -================================================================ - -github.com/imdario/mergo -https://github.com/imdario/mergo ----------------------------------------------------------------- -Copyright (c) 2013 Dario Castañé. All rights reserved. -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/inconshreveable/mousetrap -https://github.com/inconshreveable/mousetrap ----------------------------------------------------------------- -Copyright 2014 Alan Shreve - -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. - -================================================================ - -github.com/jbenet/go-context -https://github.com/jbenet/go-context ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Juan Batiz-Benet - -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. - -================================================================ - -github.com/json-iterator/go -https://github.com/json-iterator/go ----------------------------------------------------------------- -MIT License - -Copyright (c) 2016 json-iterator - -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. - -================================================================ - -github.com/kevinburke/ssh_config -https://github.com/kevinburke/ssh_config ----------------------------------------------------------------- -Copyright (c) 2017 Kevin Burke. - -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. - -=================== - -The lexer and parser borrow heavily from github.com/pelletier/go-toml. The -license for that project is copied below. - -The MIT License (MIT) - -Copyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton - -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. - -================================================================ - -github.com/kr/pretty -https://github.com/kr/pretty ----------------------------------------------------------------- -Copyright 2012 Keith Rarick - -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. - -================================================================ - -github.com/kr/text -https://github.com/kr/text ----------------------------------------------------------------- -Copyright 2012 Keith Rarick - -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. - -================================================================ - -github.com/kylelemons/godebug -https://github.com/kylelemons/godebug ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/leodido/go-urn -https://github.com/leodido/go-urn ----------------------------------------------------------------- -MIT License - -Copyright (c) 2018 Leonardo Di Donato - -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. - -================================================================ - -github.com/lib/pq -https://github.com/lib/pq ----------------------------------------------------------------- -Copyright (c) 2011-2013, 'pq' Contributors -Portions Copyright (C) 2011 Blake Mizerany - -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. - -================================================================ - -github.com/magiconair/properties -https://github.com/magiconair/properties ----------------------------------------------------------------- -Copyright (c) 2013-2020, Frank Schroeder - -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. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/matryer/is -https://github.com/matryer/is ----------------------------------------------------------------- -MIT License - -Copyright (c) 2017-2018 Mat Ryer - -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. - -================================================================ - -github.com/mitchellh/go-homedir -https://github.com/mitchellh/go-homedir ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2013 Mitchell Hashimoto - -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. - -================================================================ - -github.com/mitchellh/go-wordwrap -https://github.com/mitchellh/go-wordwrap ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Mitchell Hashimoto - -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. - -================================================================ - -github.com/mitchellh/mapstructure -https://github.com/mitchellh/mapstructure ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2013 Mitchell Hashimoto - -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. - -================================================================ - -github.com/modern-go/concurrent -https://github.com/modern-go/concurrent ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/modern-go/reflect2 -https://github.com/modern-go/reflect2 ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/mpvl/unique -https://github.com/mpvl/unique ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2015 Marcel van Lohuizen - -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. - - -================================================================ - -github.com/nxadm/tail -https://github.com/nxadm/tail ----------------------------------------------------------------- -# The MIT License (MIT) - -# © Copyright 2015 Hewlett Packard Enterprise Development LP -Copyright (c) 2014 ActiveState - -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. - -================================================================ - -github.com/onsi/ginkgo -https://github.com/onsi/ginkgo ----------------------------------------------------------------- -Copyright (c) 2013-2014 Onsi Fakhouri - -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. - -================================================================ - -github.com/onsi/gomega -https://github.com/onsi/gomega ----------------------------------------------------------------- -Copyright (c) 2013-2014 Onsi Fakhouri - -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. - -================================================================ - -github.com/openconfig/gnmi -https://github.com/openconfig/gnmi ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/openconfig/goyang -https://github.com/openconfig/goyang ----------------------------------------------------------------- - 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. - - -================================================================ - -github.com/openconfig/grpctunnel -https://github.com/openconfig/grpctunnel ----------------------------------------------------------------- - 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. -================================================================ - -github.com/openconfig/ygot -https://github.com/openconfig/ygot ----------------------------------------------------------------- - - 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 2017 Google, Inc. - - 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. - -================================================================ - -github.com/pelletier/go-toml -https://github.com/pelletier/go-toml ----------------------------------------------------------------- -The bulk of github.com/pelletier/go-toml is distributed under the MIT license -(see below), with the exception of localtime.go and localtime.test.go. -Those two files have been copied over from Google's civil library at revision -ed46f5086358513cf8c25f8e3f022cb838a49d66, and are distributed under the Apache -2.0 license (see below). - - -github.com/pelletier/go-toml: - - -The MIT License (MIT) - -Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton - -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. - - -localtime.go, localtime_test.go: - -Originals: - https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil.go - https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/civil/civil_test.go -Changes: - * Renamed files from civil* to localtime*. - * Package changed from civil to toml. - * 'Local' prefix added to all structs. -License: - https://raw.githubusercontent.com/googleapis/google-cloud-go/ed46f5086358513cf8c25f8e3f022cb838a49d66/LICENSE - - - 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. - -================================================================ - -github.com/pelletier/go-toml/v2 -https://github.com/pelletier/go-toml/v2 ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2013 - 2022 Thomas Pelletier, Eric Anderton - -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. - -================================================================ - -github.com/pkg/errors -https://github.com/pkg/errors ----------------------------------------------------------------- -Copyright (c) 2015, Dave Cheney -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. - -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. - -================================================================ - -github.com/pmezard/go-difflib -https://github.com/pmezard/go-difflib ----------------------------------------------------------------- -Copyright (c) 2013, Patrick Mezard -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. - The names of its contributors may not 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. - -================================================================ - -github.com/protocolbuffers/txtpbfmt -https://github.com/protocolbuffers/txtpbfmt ----------------------------------------------------------------- - - 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. - -================================================================ - -github.com/rogpeppe/go-internal -https://github.com/rogpeppe/go-internal ----------------------------------------------------------------- -Copyright (c) 2018 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/sergi/go-diff -https://github.com/sergi/go-diff ----------------------------------------------------------------- -Copyright (c) 2012-2016 The go-diff Authors. All rights reserved. - -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. - - -================================================================ - -github.com/shurcooL/githubv4 -https://github.com/shurcooL/githubv4 ----------------------------------------------------------------- -MIT License - -Copyright (c) 2017 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. - -================================================================ - -github.com/shurcooL/graphql -https://github.com/shurcooL/graphql ----------------------------------------------------------------- -MIT License - -Copyright (c) 2017 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. - -================================================================ - -github.com/spf13/afero -https://github.com/spf13/afero ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/spf13/cast -https://github.com/spf13/cast ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Steve Francia - -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. -================================================================ - -github.com/spf13/cobra -https://github.com/spf13/cobra ----------------------------------------------------------------- - 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. - -================================================================ - -github.com/spf13/jwalterweatherman -https://github.com/spf13/jwalterweatherman ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Steve Francia - -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. -================================================================ - -github.com/spf13/pflag -https://github.com/spf13/pflag ----------------------------------------------------------------- -Copyright (c) 2012 Alex Ogier. All rights reserved. -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -github.com/spf13/viper -https://github.com/spf13/viper ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Steve Francia - -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. -================================================================ - -github.com/stretchr/testify -https://github.com/stretchr/testify ----------------------------------------------------------------- -MIT License - -Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors. - -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. - -================================================================ - -github.com/subosito/gotenv -https://github.com/subosito/gotenv ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2013 Alif Rachmawadi - -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. - -================================================================ - -github.com/xanzy/ssh-agent -https://github.com/xanzy/ssh-agent ----------------------------------------------------------------- - 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. - - -================================================================ - -go.uber.org/atomic -https://go.uber.org/atomic ----------------------------------------------------------------- -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 -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. - -================================================================ - -go.uber.org/goleak -https://go.uber.org/goleak ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2018 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. - -================================================================ - -go.uber.org/multierr -https://go.uber.org/multierr ----------------------------------------------------------------- -Copyright (c) 2017 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. - -================================================================ - -go.uber.org/zap -https://go.uber.org/zap ----------------------------------------------------------------- -Copyright (c) 2016-2017 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. - -================================================================ - -golang.org/x/crypto -https://golang.org/x/crypto ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/net -https://golang.org/x/net ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/oauth2 -https://golang.org/x/oauth2 ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/sys -https://golang.org/x/sys ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/term -https://golang.org/x/term ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/text -https://golang.org/x/text ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -golang.org/x/tools -https://golang.org/x/tools ----------------------------------------------------------------- -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -google.golang.org/appengine -https://google.golang.org/appengine ----------------------------------------------------------------- - - 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. - -================================================================ - -google.golang.org/genproto -https://google.golang.org/genproto ----------------------------------------------------------------- - - 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. - -================================================================ - -google.golang.org/grpc -https://google.golang.org/grpc ----------------------------------------------------------------- - - 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. - -================================================================ - -google.golang.org/protobuf -https://google.golang.org/protobuf ----------------------------------------------------------------- -Copyright (c) 2018 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -gopkg.in/check.v1 -https://gopkg.in/check.v1 ----------------------------------------------------------------- -Gocheck - A rich testing framework for Go - -Copyright (c) 2010-2013 Gustavo Niemeyer - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. 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. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -gopkg.in/inf.v0 -https://gopkg.in/inf.v0 ----------------------------------------------------------------- -Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go -Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -gopkg.in/ini.v1 -https://gopkg.in/ini.v1 ----------------------------------------------------------------- -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: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -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 -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 2014 Unknwon - - 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. - -================================================================ - -gopkg.in/tomb.v1 -https://gopkg.in/tomb.v1 ----------------------------------------------------------------- -tomb - support for clean goroutine termination in Go. - -Copyright (c) 2010-2011 - Gustavo Niemeyer - -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 copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -gopkg.in/warnings.v0 -https://gopkg.in/warnings.v0 ----------------------------------------------------------------- -Copyright (c) 2016 Péter Surányi. - -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. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -gopkg.in/yaml.v2 -https://gopkg.in/yaml.v2 ----------------------------------------------------------------- - 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. - -================================================================ - -gopkg.in/yaml.v3 -https://gopkg.in/yaml.v3 ----------------------------------------------------------------- - -This project is covered by two different licenses: MIT and Apache. - -#### MIT License #### - -The following files were ported to Go from C files of libyaml, and thus -are still covered by their original MIT license, with the additional -copyright staring in 2011 when the project was ported over: - - apic.go emitterc.go parserc.go readerc.go scannerc.go - writerc.go yamlh.go yamlprivateh.go - -Copyright (c) 2006-2010 Kirill Simonov -Copyright (c) 2006-2011 Kirill Simonov - -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. - -### Apache License ### - -All the remaining project files are covered by the Apache license: - -Copyright (c) 2011-2019 Canonical Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -================================================================ - -k8s.io/api -https://k8s.io/api ----------------------------------------------------------------- - - 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. - -================================================================ - -k8s.io/apimachinery -https://k8s.io/apimachinery ----------------------------------------------------------------- - - 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. - -================================================================ - -k8s.io/klog/v2 -https://k8s.io/klog/v2 ----------------------------------------------------------------- -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: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -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 -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. - -================================================================ - -k8s.io/utils -https://k8s.io/utils ----------------------------------------------------------------- - - 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. - -================================================================ - -sigs.k8s.io/controller-runtime -https://sigs.k8s.io/controller-runtime ----------------------------------------------------------------- - 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. - -================================================================ - -sigs.k8s.io/json -https://sigs.k8s.io/json ----------------------------------------------------------------- -Files other than internal/golang/* licensed under: - - - 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. - - ------------------- - -internal/golang/* files licensed under: - - -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - -sigs.k8s.io/structured-merge-diff/v4 -https://sigs.k8s.io/structured-merge-diff/v4 ----------------------------------------------------------------- - 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. - -================================================================ - -sigs.k8s.io/yaml -https://sigs.k8s.io/yaml ----------------------------------------------------------------- -The MIT License (MIT) - -Copyright (c) 2014 Sam Ghods - -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. - - -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -================================================================ - diff --git a/Makefile b/Makefile index df3b5e3..a149cf8 100644 --- a/Makefile +++ b/Makefile @@ -1,84 +1,21 @@ -IMG ?= kuesta:latest -KUSTOMIZE_ROOT ?= overlays/example - -.PHONY: docker-build -docker-build: test - docker build -f build/Dockerfile.kuesta -t ${IMG} . - -.PHONY: docker-push -docker-push: - docker push ${IMG} - -.PHONY: deploy-preview -deploy-preview: kustomize - cd config/bases/kuesta && $(KUSTOMIZE) edit set image kuesta=${IMG} - kubectl kustomize config/${KUSTOMIZE_ROOT} +.PHONY: kind-load +kind-load: + cd nb-server && $(MAKE) kind-load + cd sb-server && $(MAKE) kind-load + cd github-server && $(MAKE) kind-load .PHONY: deploy -deploy: kustomize - cd config/bases/kuesta && $(KUSTOMIZE) edit set image kuesta=${IMG} - kubectl apply -k config/${KUSTOMIZE_ROOT} +deploy: + cd nb-server && $(MAKE) deploy + cd sb-server && $(MAKE) deploy + cd github-server && $(MAKE) deploy .PHONY: undeploy -undeploy: kustomize - cd config/bases/kuesta && $(KUSTOMIZE) edit set image kuesta=${IMG} - kubectl delete -k config/${KUSTOMIZE_ROOT} - -.PHONY: fmt -fmt: ## Run go fmt against code. - go fmt ./... - -.PHONY: vet -vet: ## Run go vet against code. - go vet ./... - -.PHONY: test -test: fmt vet ## Run tests. - go test ./... -coverprofile cover.out - -.PHONY: test-all -test-all: - @echo "*** kuesta ***" - make test - @echo - @echo "*** kuesta-provisioner ***" - cd provisioner && make test - @echo - @echo "*** device-operator ***" - cd device-operator && make test - @echo - @echo "*** device-subscriber ***" - cd device-subscriber && make test - -.PHONY: lint-all -lint-all: - @echo "*** kuesta ***" - golangci-lint run -v - @echo - @echo "*** kuesta-provisioner ***" - cd provisioner && golangci-lint run -v - @echo - @echo "*** device-operator ***" - cd device-operator && golangci-lint run -v - @echo - @echo "*** device-subscriber ***" - cd device-subscriber && golangci-lint run -v - -##@ Build Dependencies - -## Location to install dependencies to -LOCALBIN ?= $(shell pwd)/bin -$(LOCALBIN): - mkdir -p $(LOCALBIN) - -## Tool Versions -KUSTOMIZE_VERSION ?= v4.5.7 - -## Tool Binaries -KUSTOMIZE ?= $(LOCALBIN)/kustomize -KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/kustomize/$(KUSTOMIZE_VERSION)/hack/install_kustomize.sh" - -.PHONY: kustomize -kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. -$(KUSTOMIZE): $(LOCALBIN) - test -s $(LOCALBIN)/kustomize || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } \ No newline at end of file +undeploy: + cd nb-server && $(MAKE) undeploy + cd sb-server && $(MAKE) undeploy + cd github-server && $(MAKE) undeploy + +.PHONY: getting-started +getting-started: kind-load deploy + kubectl get pods \ No newline at end of file diff --git a/README.md b/README.md index 9d2325f..7490feb 100644 --- a/README.md +++ b/README.md @@ -20,35 +20,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> -# Kuesta +# K-SOT -[![Go 1.18+](https://img.shields.io/badge/go-1.18-9cf.svg)](https://golang.org/dl/) -[![Go Report Card](https://goreportcard.com/badge/nttcom/kuesta)](https://goreportcard.com/report/github.com/nttcom/kuesta) -[![build](https://github.com/nttcom/kuesta/actions/workflows/build.yml/badge.svg)](https://github.com/nttcom/kuesta/actions/workflows/build.yml) -[![test](https://github.com/nttcom/kuesta/actions/workflows/test.yml/badge.svg)](https://github.com/nttcom/kuesta/actions/workflows/test.yml) +[![Go 1.21+](https://img.shields.io/badge/go-1.21-9cf.svg)](https://golang.org/dl/) -**Kuesta** is an open source framework for network configuration, enabling Infrastructure-as-Code of network devices. It provides us a rich network automation by adopting cloud-native best practices of IaC and GitOps. +**K-SOT** is an open source framework for network configuration, enabling Infrastructure-as-Code of network devices. It provides us a rich network automation by adopting cloud-native best practices of IaC and GitOps. -Documentation is available at https://nttcom.github.io/kuesta-website/docs. +Documentation is available at https://nttcom.github.io/ksot-website/docs. ## Getting started -- ["Getting-started" tutorial](https://nttcom.github.io/kuesta-website/docs/getting-started) -- [Installing Kuesta](https://nttcom.github.io/kuesta-website/docs/installation) +- ["Getting-started" tutorial](https://nttcom.github.io/ksot-website/docs/getting-started) +- [Installing K-SOT](https://nttcom.github.io/ksot-website/docs/installation) ## Contact -Ask questions via [GitHub Discussions](https://github.com/nttcom/kuesta/discussions). +Ask questions via [GitHub Discussions](https://github.com/nttcom/ksot/discussions). ## Contributing -- To contribute, please read the [Contribution Guide](https://nttcom.github.io/kuesta-website/docs/contribution-guidelines/). -- To report issues or make a feature request, use the [GitHub Issues](https://github.com/nttcom/kuesta/issues). +- To contribute, please read the [Contribution Guide](https://nttcom.github.io/ksot-website/docs/contribution-guidelines/). +- To report issues or make a feature request, use the [GitHub Issues](https://github.com/nttcom/ksot/issues). ## License -Kuesta is under the [MIT license](https://en.wikipedia.org/wiki/MIT_License). +K-SOT is under the [MIT license](https://en.wikipedia.org/wiki/MIT_License). \ No newline at end of file diff --git a/build/Dockerfile.device-operator b/build/Dockerfile.device-operator deleted file mode 100644 index ebf78e8..0000000 --- a/build/Dockerfile.device-operator +++ /dev/null @@ -1,30 +0,0 @@ -# Build the manager binary -FROM golang:1.18 as builder - -WORKDIR /workspace/device-operator -RUN mkdir ../provisioner -COPY device-operator/go.mod ./ -COPY device-operator/go.sum ./ -COPY provisioner/go.mod ../provisioner/ -COPY provisioner/go.sum ../provisioner/ -COPY go.mod ../ -COPY go.sum ../ - -# cache deps before building and copying source so that we don't need to re-download as much -# and so that source changes don't invalidate our downloaded layer -RUN go mod download - -# Copy the go source -COPY . ../ - -# Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go - -# Use distroless as minimal base image to package the manager binary -# Refer to https://github.com/GoogleContainerTools/distroless for more details -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY --from=builder /workspace/device-operator/manager . -USER 65532:65532 - -ENTRYPOINT ["/manager"] diff --git a/build/Dockerfile.goreleaser.device-operator b/build/Dockerfile.goreleaser.device-operator deleted file mode 100644 index a6268d3..0000000 --- a/build/Dockerfile.goreleaser.device-operator +++ /dev/null @@ -1,6 +0,0 @@ -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY device-operator /manager -USER 65532:65532 - -ENTRYPOINT ["/manager] diff --git a/build/Dockerfile.goreleaser.device-subscriber b/build/Dockerfile.goreleaser.device-subscriber deleted file mode 100644 index c4802b9..0000000 --- a/build/Dockerfile.goreleaser.device-subscriber +++ /dev/null @@ -1,6 +0,0 @@ -FROM scratch -WORKDIR /bin -COPY device-subscriber /bin/subscriber - -EXPOSE 9339 -ENTRYPOINT ["/bin/subscriber"] diff --git a/build/Dockerfile.goreleaser.kuesta b/build/Dockerfile.goreleaser.kuesta deleted file mode 100644 index 0560504..0000000 --- a/build/Dockerfile.goreleaser.kuesta +++ /dev/null @@ -1,7 +0,0 @@ -FROM scratch -WORKDIR /bin -COPY kuesta . -COPY --from=golang:1.18 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt - -EXPOSE 9339 8080 -ENTRYPOINT ["/bin/kuesta"] diff --git a/build/Dockerfile.goreleaser.provisioner b/build/Dockerfile.goreleaser.provisioner deleted file mode 100644 index 5cd5b9f..0000000 --- a/build/Dockerfile.goreleaser.provisioner +++ /dev/null @@ -1,6 +0,0 @@ -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY provisioner /manager -USER 65532:65532 - -ENTRYPOINT ["/manager"] diff --git a/build/Dockerfile.kuesta b/build/Dockerfile.kuesta deleted file mode 100644 index f0ec623..0000000 --- a/build/Dockerfile.kuesta +++ /dev/null @@ -1,29 +0,0 @@ -FROM golang:1.18 as builder - -WORKDIR /workspace -COPY go.mod ./ -COPY go.sum ./ -RUN go mod download - -COPY main.go ./ -COPY internal/ internal/ -COPY pkg/ pkg/ - -ARG CGO_ENABLED=0 -ARG GOOS=linux -ARG GOARCH=amd64 - -RUN CGO_ENABLED=${CGO_ENABLED} \ - GOOS=${GOOS} \ - GOARCH=${GOARCH} \ - go build -o kuesta -ldflags "-w -s" main.go - - -FROM scratch -WORKDIR /bin -COPY --from=builder /workspace/kuesta . -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt - -EXPOSE 9339 8080 - -ENTRYPOINT ["/bin/kuesta"] diff --git a/build/Dockerfile.provisioner b/build/Dockerfile.provisioner deleted file mode 100644 index 9805224..0000000 --- a/build/Dockerfile.provisioner +++ /dev/null @@ -1,27 +0,0 @@ -# Build the manager binary -FROM golang:1.18 as builder - -WORKDIR /workspace/provisioner -COPY provisioner/go.mod ./ -COPY provisioner/go.sum ./ -COPY go.mod ../ -COPY go.sum ../ - -# cache deps before building and copying source so that we don't need to re-download as much -# and so that source changes don't invalidate our downloaded layer -RUN go mod download - -# Copy the go source -COPY . ../ - -# Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go - -# Use distroless as minimal base image to package the manager binary -# Refer to https://github.com/GoogleContainerTools/distroless for more details -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY --from=builder /workspace/provisioner/manager . -USER 65532:65532 - -ENTRYPOINT ["/manager"] diff --git a/build/Dockerfile.subscriber b/build/Dockerfile.subscriber deleted file mode 100644 index 35252fa..0000000 --- a/build/Dockerfile.subscriber +++ /dev/null @@ -1,26 +0,0 @@ -FROM golang:1.18 as builder - -WORKDIR /workspace/device-subscriber -COPY device-subscriber/go.mod ./ -COPY device-subscriber/go.sum ./ -COPY go.mod ../ -COPY go.sum ../ -RUN go mod download - -COPY . ../ - -ARG CGO_ENABLED=0 -ARG GOOS=linux -ARG GOARCH=amd64 - -RUN CGO_ENABLED=${CGO_ENABLED} \ - GOOS=${GOOS} \ - GOARCH=${GOARCH} \ - go build -o subscriber -ldflags "-w -s" main.go - - -FROM scratch -WORKDIR /bin -COPY --from=builder /workspace/device-subscriber/subscriber . - -ENTRYPOINT ["/bin/subscriber"] diff --git a/config/.gitignore b/config/.gitignore deleted file mode 100644 index 84301da..0000000 --- a/config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -overlays \ No newline at end of file diff --git a/config/bases/kuesta/kuesta-aggregator.deploy.yaml b/config/bases/kuesta/kuesta-aggregator.deploy.yaml deleted file mode 100644 index 4093523..0000000 --- a/config/bases/kuesta/kuesta-aggregator.deploy.yaml +++ /dev/null @@ -1,56 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: kuesta-aggregator -spec: - selector: - matchLabels: - app: kuesta-aggregator - replicas: 1 - template: - metadata: - labels: - app: kuesta-aggregator - spec: - containers: - - name: kuesta - image: kuesta:latest - imagePullPolicy: IfNotPresent - command: - - /bin/kuesta - args: - - device - - aggregate - env: - - name: KUESTA_STATUS_ROOT_PATH - value: /data/repo_status - - name: KUESTA_STATUS_REPO_URL - value: https://path/to/repo-status - - name: KUESTA_INSECURE - value: "true" - - name: KUESTA_TLS_CRT - value: /tmp/cert/tls.crt - - name: KUESTA_TLS_KEY - value: /tmp/cert/tls.key - - name: KUESTA_TLS_CA_CRT - value: /tmp/cert/ca.crt - securityContext: - allowPrivilegeEscalation: false - volumeMounts: - - mountPath: /data - name: kuesta-aggregator-data - - mountPath: /tmp/cert - name: cert - readOnly: true - ports: - - containerPort: 8000 - name: http - protocol: TCP - volumes: - - name: kuesta-aggregator-data - persistentVolumeClaim: - claimName: kuesta-aggregator-data - - name: cert - secret: - defaultMode: 420 - secretName: kuesta-aggregator-cert diff --git a/config/bases/kuesta/kuesta-aggregator.pvc.yaml b/config/bases/kuesta/kuesta-aggregator.pvc.yaml deleted file mode 100644 index 2ac7557..0000000 --- a/config/bases/kuesta/kuesta-aggregator.pvc.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: kuesta-aggregator-data -spec: - accessModes: - - ReadWriteOnce - storageClassName: standard - resources: - requests: - storage: 5Gi diff --git a/config/bases/kuesta/kuesta-aggregator.svc.yaml b/config/bases/kuesta/kuesta-aggregator.svc.yaml deleted file mode 100644 index ca34106..0000000 --- a/config/bases/kuesta/kuesta-aggregator.svc.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: kuesta-aggregator -spec: - type: ClusterIP - selector: - app: kuesta-aggregator - ports: - - name: http - port: 8000 - targetPort: 8000 - protocol: TCP diff --git a/config/bases/kuesta/kuesta-cert.yaml b/config/bases/kuesta/kuesta-cert.yaml deleted file mode 100644 index 6d4f4c1..0000000 --- a/config/bases/kuesta/kuesta-cert.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: kuesta-server-cert - namespace: kuesta-system -spec: - dnsNames: - - kuesta-server.kuesta-system.svc - - kuesta-server.kuesta-system.svc.cluster.local - - localhost - issuerRef: - kind: ClusterIssuer - name: kuesta-ca-issuer - secretName: kuesta-server-cert ---- -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: kuesta-aggregator-cert - namespace: kuesta-system -spec: - dnsNames: - - kuesta-aggregator.kuesta-system.svc - - kuesta-aggregator.kuesta-system.svc.cluster.local - issuerRef: - kind: ClusterIssuer - name: kuesta-ca-issuer - secretName: kuesta-aggregator-cert diff --git a/config/bases/kuesta/kuesta-server.deploy.yaml b/config/bases/kuesta/kuesta-server.deploy.yaml deleted file mode 100644 index 0333805..0000000 --- a/config/bases/kuesta/kuesta-server.deploy.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: kuesta-server -spec: - selector: - matchLabels: - app: kuesta-server - replicas: 1 - template: - metadata: - labels: - app: kuesta-server - spec: - containers: - - name: kuesta - image: kuesta:latest - imagePullPolicy: IfNotPresent - command: - - /bin/kuesta - args: - - serve - env: - - name: KUESTA_CONFIG_ROOT_PATH - value: /data/repo_config - - name: KUESTA_CONFIG_REPO_URL - value: https://path/to/repo-config - - name: KUESTA_STATUS_ROOT_PATH - value: /data/repo_status - - name: KUESTA_STATUS_REPO_URL - value: https://path/to/repo-status - - name: KUESTA_TLS_CRT - value: /tmp/cert/tls.crt - - name: KUESTA_TLS_KEY - value: /tmp/cert/tls.key - - name: KUESTA_TLS_CA_CRT - value: /tmp/cert/ca.crt - - name: KUESTA_NOTLS - value: "true" - securityContext: - allowPrivilegeEscalation: false - volumeMounts: - - mountPath: /data - name: kuesta-server-data - - mountPath: /tmp/cert - name: cert - readOnly: true - ports: - - name: grpc - containerPort: 9339 - protocol: TCP - - name: http - containerPort: 8080 - protocol: TCP - volumes: - - name: kuesta-server-data - persistentVolumeClaim: - claimName: kuesta-server-data - - name: cert - secret: - defaultMode: 420 - secretName: kuesta-server-cert diff --git a/config/bases/kuesta/kuesta-server.pvc.yaml b/config/bases/kuesta/kuesta-server.pvc.yaml deleted file mode 100644 index fcc68c3..0000000 --- a/config/bases/kuesta/kuesta-server.pvc.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: kuesta-server-data -spec: - accessModes: - - ReadWriteOnce - storageClassName: standard - resources: - requests: - storage: 5Gi diff --git a/config/bases/kuesta/kuesta-server.svc.yaml b/config/bases/kuesta/kuesta-server.svc.yaml deleted file mode 100644 index e38532e..0000000 --- a/config/bases/kuesta/kuesta-server.svc.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: kuesta-server -spec: - type: ClusterIP - selector: - app: kuesta-server - ports: - - name: grpc - port: 9339 - targetPort: 9339 - protocol: TCP - - name: http - port: 8080 - targetPort: 8080 - protocol: TCP diff --git a/config/bases/kuesta/kustomization.yaml b/config/bases/kuesta/kustomization.yaml deleted file mode 100644 index a048b40..0000000 --- a/config/bases/kuesta/kustomization.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- namespace.yaml -- kuesta-aggregator.deploy.yaml -- kuesta-aggregator.svc.yaml -- kuesta-aggregator.pvc.yaml -- kuesta-server.deploy.yaml -- kuesta-server.svc.yaml -- kuesta-server.pvc.yaml -- kuesta-cert.yaml - -images: -- name: kuesta - newName: ghcr.io/nttcom/kuesta/kuesta - newTag: latest diff --git a/config/bases/kuesta/namespace.yaml b/config/bases/kuesta/namespace.yaml deleted file mode 100644 index 9c186de..0000000 --- a/config/bases/kuesta/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: system \ No newline at end of file diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml deleted file mode 100644 index 2922150..0000000 --- a/config/default/kustomization.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - ../bases/kuesta \ No newline at end of file diff --git a/config/overlays/example/kustomization.yaml b/config/overlays/example/kustomization.yaml deleted file mode 100644 index dd0debe..0000000 --- a/config/overlays/example/kustomization.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- ../../default - -namespace: kuesta-system - -secretGenerator: - - envs: - - .env.secret - name: kuesta-secrets - -patches: -- patch.yaml diff --git a/config/overlays/example/patch.yaml b/config/overlays/example/patch.yaml deleted file mode 100644 index c2d08fb..0000000 --- a/config/overlays/example/patch.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: kuesta-aggregator -spec: - template: - spec: - containers: - - name: kuesta - env: - - name: KUESTA_STATUS_REPO_URL - value: https://github.com/kuesta-example/kuesta-status - - name: KUESTA_GIT_TOKEN - valueFrom: - secretKeyRef: - name: kuesta-secrets - key: gitToken ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: kuesta-server -spec: - template: - spec: - containers: - - name: kuesta - env: - - name: KUESTA_CONFIG_REPO_URL - value: https://github.com/kuesta-example/kuesta-config - - name: KUESTA_STATUS_REPO_URL - value: https://github.com/kuesta-example/kuesta-status - - name: KUESTA_GIT_TOKEN - valueFrom: - secretKeyRef: - name: kuesta-secrets - key: gitToken diff --git a/config/privateCA/kuesta-ca-issuer.yaml b/config/privateCA/kuesta-ca-issuer.yaml deleted file mode 100644 index 799f072..0000000 --- a/config/privateCA/kuesta-ca-issuer.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: kuesta-selfsigned-issuer - namespace: cert-manager -spec: - selfSigned: {} ---- -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: kuesta-ca-cert - namespace: cert-manager -spec: - isCA: true - commonName: Kuesta Root CA - subject: - organizationalUnits: - - Kuesta Certification Authority - issuerRef: - kind: Issuer - name: kuesta-selfsigned-issuer - secretName: kuesta-ca-cert ---- -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: kuesta-ca-issuer - namespace: cert-manager -spec: - ca: - secretName: kuesta-ca-cert diff --git a/config/vendor/cert-manager-v1.10.1.yaml b/config/vendor/cert-manager-v1.10.1.yaml deleted file mode 100644 index be0bd0f..0000000 --- a/config/vendor/cert-manager-v1.10.1.yaml +++ /dev/null @@ -1,5518 +0,0 @@ -# Copyright 2022 The cert-manager 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. - -apiVersion: v1 -kind: Namespace -metadata: - name: cert-manager ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: clusterissuers.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: cert-manager.io - names: - kind: ClusterIssuer - listKind: ClusterIssuerList - plural: clusterissuers - singular: clusterissuer - categories: - - cert-manager - scope: Cluster - versions: - - name: v1 - subresources: - status: {} - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - priority: 1 - type: string - - jsonPath: .metadata.creationTimestamp - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - name: Age - type: date - schema: - openAPIV3Schema: - description: A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent. - type: object - required: - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Desired state of the ClusterIssuer resource. - type: object - properties: - acme: - description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates. - type: object - required: - - privateKeySecretRef - - server - properties: - disableAccountKeyGeneration: - description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false. - type: boolean - email: - description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered. - type: string - enableDurationFeature: - description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false. - type: boolean - externalAccountBinding: - description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account. - type: object - required: - - keyID - - keySecretRef - properties: - keyAlgorithm: - description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.' - type: string - enum: - - HS256 - - HS384 - - HS512 - keyID: - description: keyID is the ID of the CA key that the External Account is bound to. - type: string - keySecretRef: - description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - preferredChain: - description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN' - type: string - maxLength: 64 - privateKeySecretRef: - description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - server: - description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.' - type: string - skipTLSVerify: - description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false. - type: boolean - solvers: - description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/' - type: array - items: - description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided. - type: object - properties: - dns01: - description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow. - type: object - properties: - acmeDNS: - description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records. - type: object - required: - - accountSecretRef - - host - properties: - accountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - host: - type: string - akamai: - description: Use the Akamai DNS zone management API to manage DNS01 challenge records. - type: object - required: - - accessTokenSecretRef - - clientSecretSecretRef - - clientTokenSecretRef - - serviceConsumerDomain - properties: - accessTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientSecretSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - serviceConsumerDomain: - type: string - azureDNS: - description: Use the Microsoft Azure DNS API to manage DNS01 challenge records. - type: object - required: - - resourceGroupName - - subscriptionID - properties: - clientID: - description: if both this and ClientSecret are left unset MSI will be used - type: string - clientSecretSecretRef: - description: if both this and ClientID are left unset MSI will be used - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - environment: - description: name of the Azure environment (default AzurePublicCloud) - type: string - enum: - - AzurePublicCloud - - AzureChinaCloud - - AzureGermanCloud - - AzureUSGovernmentCloud - hostedZoneName: - description: name of the DNS zone that should be used - type: string - managedIdentity: - description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID - type: object - properties: - clientID: - description: client ID of the managed identity, can not be used at the same time as resourceID - type: string - resourceID: - description: resource ID of the managed identity, can not be used at the same time as clientID - type: string - resourceGroupName: - description: resource group the DNS zone is located in - type: string - subscriptionID: - description: ID of the Azure subscription - type: string - tenantID: - description: when specifying ClientID and ClientSecret then this field is also needed - type: string - cloudDNS: - description: Use the Google Cloud DNS API to manage DNS01 challenge records. - type: object - required: - - project - properties: - hostedZoneName: - description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone. - type: string - project: - type: string - serviceAccountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - cloudflare: - description: Use the Cloudflare API to manage DNS01 challenge records. - type: object - properties: - apiKeySecretRef: - description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - apiTokenSecretRef: - description: API token used to authenticate with Cloudflare. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - email: - description: Email of the account, only required when using API key based authentication. - type: string - cnameStrategy: - description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones. - type: string - enum: - - None - - Follow - digitalocean: - description: Use the DigitalOcean DNS API to manage DNS01 challenge records. - type: object - required: - - tokenSecretRef - properties: - tokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - rfc2136: - description: Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records. - type: object - required: - - nameserver - properties: - nameserver: - description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required. - type: string - tsigAlgorithm: - description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.' - type: string - tsigKeyName: - description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required. - type: string - tsigSecretSecretRef: - description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - route53: - description: Use the AWS Route53 API to manage DNS01 challenge records. - type: object - required: - - region - properties: - accessKeyID: - description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: string - accessKeyIDSecretRef: - description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - hostedZoneID: - description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call. - type: string - region: - description: Always set the region when using AccessKeyID and SecretAccessKey - type: string - role: - description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata - type: string - secretAccessKeySecretRef: - description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - webhook: - description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records. - type: object - required: - - groupName - - solverName - properties: - config: - description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation. - x-kubernetes-preserve-unknown-fields: true - groupName: - description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation. - type: string - solverName: - description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'. - type: string - http01: - description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism. - type: object - properties: - gatewayHTTPRoute: - description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future. - type: object - properties: - labels: - description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges. - type: object - additionalProperties: - type: string - parentRefs: - description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways' - type: array - items: - description: "ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid." - type: object - required: - - name - properties: - group: - description: "Group is the group of the referent. \n Support: Core" - type: string - default: gateway.networking.k8s.io - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - kind: - description: "Kind is kind of the referent. \n Support: Core (Gateway) \n Support: Custom (Other Resources)" - type: string - default: Gateway - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - name: - description: "Name is the name of the referent. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - namespace: - description: "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core" - type: string - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - port: - description: "Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Extended \n " - type: integer - format: int32 - maximum: 65535 - minimum: 1 - sectionName: - description: "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - ingress: - description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed. - type: object - properties: - class: - description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified. - type: string - ingressTemplate: - description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - name: - description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. - type: string - podTemplate: - description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the create ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - spec: - description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored. - type: object - properties: - affinity: - description: If specified, the pod's scheduling constraints - type: object - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - type: array - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - type: object - required: - - preference - - weight - properties: - preference: - description: A node selector term, associated with the corresponding weight. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - type: object - required: - - nodeSelectorTerms - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - type: array - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - x-kubernetes-map-type: atomic - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - nodeSelector: - description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' - type: object - additionalProperties: - type: string - priorityClassName: - description: If specified, the pod's priorityClassName. - type: string - serviceAccountName: - description: If specified, the pod's service account - type: string - tolerations: - description: If specified, the pod's tolerations. - type: array - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - type: object - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - type: integer - format: int64 - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - selector: - description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead. - type: object - properties: - dnsNames: - description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - dnsZones: - description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - matchLabels: - description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to. - type: object - additionalProperties: - type: string - ca: - description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager. - type: object - required: - - secretName - properties: - crlDistributionPoints: - description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set. - type: array - items: - type: string - ocspServers: - description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org". - type: array - items: - type: string - secretName: - description: SecretName is the name of the secret used to sign Certificates issued by this Issuer. - type: string - selfSigned: - description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object. - type: object - properties: - crlDistributionPoints: - description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings. - type: array - items: - type: string - vault: - description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend. - type: object - required: - - auth - - path - - server - properties: - auth: - description: Auth configures how cert-manager authenticates with the Vault server. - type: object - properties: - appRole: - description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource. - type: object - required: - - path - - roleId - - secretRef - properties: - path: - description: 'Path where the App Role authentication backend is mounted in Vault, e.g: "approle"' - type: string - roleId: - description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault. - type: string - secretRef: - description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - kubernetes: - description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server. - type: object - required: - - role - - secretRef - properties: - mountPath: - description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used. - type: string - role: - description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies. - type: string - secretRef: - description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - tokenSecretRef: - description: TokenSecretRef authenticates with Vault by presenting a token. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - caBundle: - description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection. - type: string - format: byte - caBundleSecretRef: - description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces' - type: string - path: - description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".' - type: string - server: - description: 'Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".' - type: string - venafi: - description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone. - type: object - required: - - zone - properties: - cloud: - description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified. - type: object - required: - - apiTokenSecretRef - properties: - apiTokenSecretRef: - description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - url: - description: URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1". - type: string - tpp: - description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified. - type: object - required: - - credentialsRef - - url - properties: - caBundle: - description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates. - type: string - format: byte - credentialsRef: - description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'. - type: object - required: - - name - properties: - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - url: - description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".' - type: string - zone: - description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required. - type: string - status: - description: Status of the ClusterIssuer. This is set and managed automatically. - type: object - properties: - acme: - description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates. - type: object - properties: - lastRegisteredEmail: - description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer - type: string - uri: - description: URI is the unique account identifier, which can also be used to retrieve account details from the CA - type: string - conditions: - description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`. - type: array - items: - description: IssuerCondition contains condition information for an Issuer. - type: object - required: - - status - - type - properties: - lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - type: string - format: date-time - message: - description: Message is a human readable description of the details of the last transition, complementing reason. - type: string - observedGeneration: - description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer. - type: integer - format: int64 - reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of (`True`, `False`, `Unknown`). - type: string - enum: - - "True" - - "False" - - Unknown - type: - description: Type of the condition, known values are (`Ready`). - type: string - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - served: true - storage: true ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: challenges.acme.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: acme.cert-manager.io - names: - kind: Challenge - listKind: ChallengeList - plural: challenges - singular: challenge - categories: - - cert-manager - - cert-manager-acme - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: State - type: string - - jsonPath: .spec.dnsName - name: Domain - type: string - - jsonPath: .status.reason - name: Reason - priority: 1 - type: string - - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Challenge is a type to represent a Challenge request with an ACME server - type: object - required: - - metadata - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - type: object - required: - - authorizationURL - - dnsName - - issuerRef - - key - - solver - - token - - type - - url - properties: - authorizationURL: - description: The URL to the ACME Authorization resource that this challenge is a part of. - type: string - dnsName: - description: dnsName is the identifier that this challenge is for, e.g. example.com. If the requested DNSName is a 'wildcard', this field MUST be set to the non-wildcard domain, e.g. for `*.example.com`, it must be `example.com`. - type: string - issuerRef: - description: References a properly configured ACME-type Issuer which should be used to create this Challenge. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Challenge will be marked as failed. - type: object - required: - - name - properties: - group: - description: Group of the resource being referred to. - type: string - kind: - description: Kind of the resource being referred to. - type: string - name: - description: Name of the resource being referred to. - type: string - key: - description: 'The ACME challenge key for this challenge For HTTP01 challenges, this is the value that must be responded with to complete the HTTP01 challenge in the format: `.`. For DNS01 challenges, this is the base64 encoded SHA256 sum of the `.` text that must be set as the TXT record content.' - type: string - solver: - description: Contains the domain solving configuration that should be used to solve this challenge resource. - type: object - properties: - dns01: - description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow. - type: object - properties: - acmeDNS: - description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records. - type: object - required: - - accountSecretRef - - host - properties: - accountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - host: - type: string - akamai: - description: Use the Akamai DNS zone management API to manage DNS01 challenge records. - type: object - required: - - accessTokenSecretRef - - clientSecretSecretRef - - clientTokenSecretRef - - serviceConsumerDomain - properties: - accessTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientSecretSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - serviceConsumerDomain: - type: string - azureDNS: - description: Use the Microsoft Azure DNS API to manage DNS01 challenge records. - type: object - required: - - resourceGroupName - - subscriptionID - properties: - clientID: - description: if both this and ClientSecret are left unset MSI will be used - type: string - clientSecretSecretRef: - description: if both this and ClientID are left unset MSI will be used - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - environment: - description: name of the Azure environment (default AzurePublicCloud) - type: string - enum: - - AzurePublicCloud - - AzureChinaCloud - - AzureGermanCloud - - AzureUSGovernmentCloud - hostedZoneName: - description: name of the DNS zone that should be used - type: string - managedIdentity: - description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID - type: object - properties: - clientID: - description: client ID of the managed identity, can not be used at the same time as resourceID - type: string - resourceID: - description: resource ID of the managed identity, can not be used at the same time as clientID - type: string - resourceGroupName: - description: resource group the DNS zone is located in - type: string - subscriptionID: - description: ID of the Azure subscription - type: string - tenantID: - description: when specifying ClientID and ClientSecret then this field is also needed - type: string - cloudDNS: - description: Use the Google Cloud DNS API to manage DNS01 challenge records. - type: object - required: - - project - properties: - hostedZoneName: - description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone. - type: string - project: - type: string - serviceAccountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - cloudflare: - description: Use the Cloudflare API to manage DNS01 challenge records. - type: object - properties: - apiKeySecretRef: - description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - apiTokenSecretRef: - description: API token used to authenticate with Cloudflare. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - email: - description: Email of the account, only required when using API key based authentication. - type: string - cnameStrategy: - description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones. - type: string - enum: - - None - - Follow - digitalocean: - description: Use the DigitalOcean DNS API to manage DNS01 challenge records. - type: object - required: - - tokenSecretRef - properties: - tokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - rfc2136: - description: Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records. - type: object - required: - - nameserver - properties: - nameserver: - description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required. - type: string - tsigAlgorithm: - description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.' - type: string - tsigKeyName: - description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required. - type: string - tsigSecretSecretRef: - description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - route53: - description: Use the AWS Route53 API to manage DNS01 challenge records. - type: object - required: - - region - properties: - accessKeyID: - description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: string - accessKeyIDSecretRef: - description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - hostedZoneID: - description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call. - type: string - region: - description: Always set the region when using AccessKeyID and SecretAccessKey - type: string - role: - description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata - type: string - secretAccessKeySecretRef: - description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - webhook: - description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records. - type: object - required: - - groupName - - solverName - properties: - config: - description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation. - x-kubernetes-preserve-unknown-fields: true - groupName: - description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation. - type: string - solverName: - description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'. - type: string - http01: - description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism. - type: object - properties: - gatewayHTTPRoute: - description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future. - type: object - properties: - labels: - description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges. - type: object - additionalProperties: - type: string - parentRefs: - description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways' - type: array - items: - description: "ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid." - type: object - required: - - name - properties: - group: - description: "Group is the group of the referent. \n Support: Core" - type: string - default: gateway.networking.k8s.io - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - kind: - description: "Kind is kind of the referent. \n Support: Core (Gateway) \n Support: Custom (Other Resources)" - type: string - default: Gateway - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - name: - description: "Name is the name of the referent. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - namespace: - description: "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core" - type: string - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - port: - description: "Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Extended \n " - type: integer - format: int32 - maximum: 65535 - minimum: 1 - sectionName: - description: "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - ingress: - description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed. - type: object - properties: - class: - description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified. - type: string - ingressTemplate: - description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - name: - description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. - type: string - podTemplate: - description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the create ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - spec: - description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored. - type: object - properties: - affinity: - description: If specified, the pod's scheduling constraints - type: object - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - type: array - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - type: object - required: - - preference - - weight - properties: - preference: - description: A node selector term, associated with the corresponding weight. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - type: object - required: - - nodeSelectorTerms - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - type: array - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - x-kubernetes-map-type: atomic - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - nodeSelector: - description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' - type: object - additionalProperties: - type: string - priorityClassName: - description: If specified, the pod's priorityClassName. - type: string - serviceAccountName: - description: If specified, the pod's service account - type: string - tolerations: - description: If specified, the pod's tolerations. - type: array - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - type: object - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - type: integer - format: int64 - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - selector: - description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead. - type: object - properties: - dnsNames: - description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - dnsZones: - description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - matchLabels: - description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to. - type: object - additionalProperties: - type: string - token: - description: The ACME challenge token for this challenge. This is the raw value returned from the ACME server. - type: string - type: - description: The type of ACME challenge this resource represents. One of "HTTP-01" or "DNS-01". - type: string - enum: - - HTTP-01 - - DNS-01 - url: - description: The URL of the ACME Challenge resource for this challenge. This can be used to lookup details about the status of this challenge. - type: string - wildcard: - description: wildcard will be true if this challenge is for a wildcard identifier, for example '*.example.com'. - type: boolean - status: - type: object - properties: - presented: - description: presented will be set to true if the challenge values for this challenge are currently 'presented'. This *does not* imply the self check is passing. Only that the values have been 'submitted' for the appropriate challenge mechanism (i.e. the DNS01 TXT record has been presented, or the HTTP01 configuration has been configured). - type: boolean - processing: - description: Used to denote whether this challenge should be processed or not. This field will only be set to true by the 'scheduling' component. It will only be set to false by the 'challenges' controller, after the challenge has reached a final state or timed out. If this field is set to false, the challenge controller will not take any more action. - type: boolean - reason: - description: Contains human readable information on why the Challenge is in the current state. - type: string - state: - description: Contains the current 'state' of the challenge. If not set, the state of the challenge is unknown. - type: string - enum: - - valid - - ready - - pending - - processing - - invalid - - expired - - errored - served: true - storage: true - subresources: - status: {} ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: certificaterequests.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: cert-manager.io - names: - kind: CertificateRequest - listKind: CertificateRequestList - plural: certificaterequests - shortNames: - - cr - - crs - singular: certificaterequest - categories: - - cert-manager - scope: Namespaced - versions: - - name: v1 - subresources: - status: {} - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Approved")].status - name: Approved - type: string - - jsonPath: .status.conditions[?(@.type=="Denied")].status - name: Denied - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .spec.issuerRef.name - name: Issuer - type: string - - jsonPath: .spec.username - name: Requestor - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - priority: 1 - type: string - - jsonPath: .metadata.creationTimestamp - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - name: Age - type: date - schema: - openAPIV3Schema: - description: "A CertificateRequest is used to request a signed certificate from one of the configured issuers. \n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field. \n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used." - type: object - required: - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Desired state of the CertificateRequest resource. - type: object - required: - - issuerRef - - request - properties: - duration: - description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. - type: string - extra: - description: Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable. - type: object - additionalProperties: - type: array - items: - type: string - groups: - description: Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable. - type: array - items: - type: string - x-kubernetes-list-type: atomic - isCA: - description: IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`. - type: boolean - issuerRef: - description: IssuerRef is a reference to the issuer for this CertificateRequest. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty. - type: object - required: - - name - properties: - group: - description: Group of the resource being referred to. - type: string - kind: - description: Kind of the resource being referred to. - type: string - name: - description: Name of the resource being referred to. - type: string - request: - description: The PEM-encoded x509 certificate signing request to be submitted to the CA for signing. - type: string - format: byte - uid: - description: UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable. - type: string - usages: - description: Usages is the set of x509 usages that are requested for the certificate. If usages are set they SHOULD be encoded inside the CSR spec Defaults to `digital signature` and `key encipherment` if not specified. - type: array - items: - description: "KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \n Valid KeyUsage values are as follows: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\"" - type: string - enum: - - signing - - digital signature - - content commitment - - key encipherment - - key agreement - - data encipherment - - cert sign - - crl sign - - encipher only - - decipher only - - any - - server auth - - client auth - - code signing - - email protection - - s/mime - - ipsec end system - - ipsec tunnel - - ipsec user - - timestamping - - ocsp signing - - microsoft sgc - - netscape sgc - username: - description: Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable. - type: string - status: - description: Status of the CertificateRequest. This is set and managed automatically. - type: object - properties: - ca: - description: The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available. - type: string - format: byte - certificate: - description: The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field. - type: string - format: byte - conditions: - description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`. - type: array - items: - description: CertificateRequestCondition contains condition information for a CertificateRequest. - type: object - required: - - status - - type - properties: - lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - type: string - format: date-time - message: - description: Message is a human readable description of the details of the last transition, complementing reason. - type: string - reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of (`True`, `False`, `Unknown`). - type: string - enum: - - "True" - - "False" - - Unknown - type: - description: Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`). - type: string - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - failureTime: - description: FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off. - type: string - format: date-time - served: true - storage: true ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: issuers.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: cert-manager.io - names: - kind: Issuer - listKind: IssuerList - plural: issuers - singular: issuer - categories: - - cert-manager - scope: Namespaced - versions: - - name: v1 - subresources: - status: {} - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - priority: 1 - type: string - - jsonPath: .metadata.creationTimestamp - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - name: Age - type: date - schema: - openAPIV3Schema: - description: An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace. - type: object - required: - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Desired state of the Issuer resource. - type: object - properties: - acme: - description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates. - type: object - required: - - privateKeySecretRef - - server - properties: - disableAccountKeyGeneration: - description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false. - type: boolean - email: - description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered. - type: string - enableDurationFeature: - description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false. - type: boolean - externalAccountBinding: - description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account. - type: object - required: - - keyID - - keySecretRef - properties: - keyAlgorithm: - description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.' - type: string - enum: - - HS256 - - HS384 - - HS512 - keyID: - description: keyID is the ID of the CA key that the External Account is bound to. - type: string - keySecretRef: - description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - preferredChain: - description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN' - type: string - maxLength: 64 - privateKeySecretRef: - description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - server: - description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.' - type: string - skipTLSVerify: - description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false. - type: boolean - solvers: - description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/' - type: array - items: - description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided. - type: object - properties: - dns01: - description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow. - type: object - properties: - acmeDNS: - description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records. - type: object - required: - - accountSecretRef - - host - properties: - accountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - host: - type: string - akamai: - description: Use the Akamai DNS zone management API to manage DNS01 challenge records. - type: object - required: - - accessTokenSecretRef - - clientSecretSecretRef - - clientTokenSecretRef - - serviceConsumerDomain - properties: - accessTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientSecretSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - clientTokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - serviceConsumerDomain: - type: string - azureDNS: - description: Use the Microsoft Azure DNS API to manage DNS01 challenge records. - type: object - required: - - resourceGroupName - - subscriptionID - properties: - clientID: - description: if both this and ClientSecret are left unset MSI will be used - type: string - clientSecretSecretRef: - description: if both this and ClientID are left unset MSI will be used - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - environment: - description: name of the Azure environment (default AzurePublicCloud) - type: string - enum: - - AzurePublicCloud - - AzureChinaCloud - - AzureGermanCloud - - AzureUSGovernmentCloud - hostedZoneName: - description: name of the DNS zone that should be used - type: string - managedIdentity: - description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID - type: object - properties: - clientID: - description: client ID of the managed identity, can not be used at the same time as resourceID - type: string - resourceID: - description: resource ID of the managed identity, can not be used at the same time as clientID - type: string - resourceGroupName: - description: resource group the DNS zone is located in - type: string - subscriptionID: - description: ID of the Azure subscription - type: string - tenantID: - description: when specifying ClientID and ClientSecret then this field is also needed - type: string - cloudDNS: - description: Use the Google Cloud DNS API to manage DNS01 challenge records. - type: object - required: - - project - properties: - hostedZoneName: - description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone. - type: string - project: - type: string - serviceAccountSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - cloudflare: - description: Use the Cloudflare API to manage DNS01 challenge records. - type: object - properties: - apiKeySecretRef: - description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - apiTokenSecretRef: - description: API token used to authenticate with Cloudflare. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - email: - description: Email of the account, only required when using API key based authentication. - type: string - cnameStrategy: - description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones. - type: string - enum: - - None - - Follow - digitalocean: - description: Use the DigitalOcean DNS API to manage DNS01 challenge records. - type: object - required: - - tokenSecretRef - properties: - tokenSecretRef: - description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - rfc2136: - description: Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records. - type: object - required: - - nameserver - properties: - nameserver: - description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required. - type: string - tsigAlgorithm: - description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.' - type: string - tsigKeyName: - description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required. - type: string - tsigSecretSecretRef: - description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - route53: - description: Use the AWS Route53 API to manage DNS01 challenge records. - type: object - required: - - region - properties: - accessKeyID: - description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: string - accessKeyIDSecretRef: - description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - hostedZoneID: - description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call. - type: string - region: - description: Always set the region when using AccessKeyID and SecretAccessKey - type: string - role: - description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata - type: string - secretAccessKeySecretRef: - description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials' - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - webhook: - description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records. - type: object - required: - - groupName - - solverName - properties: - config: - description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation. - x-kubernetes-preserve-unknown-fields: true - groupName: - description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation. - type: string - solverName: - description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'. - type: string - http01: - description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism. - type: object - properties: - gatewayHTTPRoute: - description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future. - type: object - properties: - labels: - description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges. - type: object - additionalProperties: - type: string - parentRefs: - description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways' - type: array - items: - description: "ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \"Core\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid." - type: object - required: - - name - properties: - group: - description: "Group is the group of the referent. \n Support: Core" - type: string - default: gateway.networking.k8s.io - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - kind: - description: "Kind is kind of the referent. \n Support: Core (Gateway) \n Support: Custom (Other Resources)" - type: string - default: Gateway - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - name: - description: "Name is the name of the referent. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - namespace: - description: "Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \n Support: Core" - type: string - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - port: - description: "Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Extended \n " - type: integer - format: int32 - maximum: 65535 - minimum: 1 - sectionName: - description: "SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \n Support: Core" - type: string - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - ingress: - description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed. - type: object - properties: - class: - description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified. - type: string - ingressTemplate: - description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver ingress. - type: object - additionalProperties: - type: string - name: - description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. - type: string - podTemplate: - description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges. - type: object - properties: - metadata: - description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values. - type: object - properties: - annotations: - description: Annotations that should be added to the create ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - labels: - description: Labels that should be added to the created ACME HTTP01 solver pods. - type: object - additionalProperties: - type: string - spec: - description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored. - type: object - properties: - affinity: - description: If specified, the pod's scheduling constraints - type: object - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - type: array - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - type: object - required: - - preference - - weight - properties: - preference: - description: A node selector term, associated with the corresponding weight. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - type: object - required: - - nodeSelectorTerms - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - type: array - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - type: object - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchFields: - description: A list of node selector requirements by node's fields. - type: array - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - type: array - items: - type: string - x-kubernetes-map-type: atomic - x-kubernetes-map-type: atomic - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - type: array - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - type: object - required: - - podAffinityTerm - - weight - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - type: integer - format: int32 - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - type: array - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - type: object - required: - - topologyKey - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. - type: object - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. The requirements are ANDed. - type: array - items: - description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - type: object - required: - - key - - operator - properties: - key: - description: key is the label key that the selector applies to. - type: string - operator: - description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - type: array - items: - type: string - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - additionalProperties: - type: string - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". - type: array - items: - type: string - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - nodeSelector: - description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' - type: object - additionalProperties: - type: string - priorityClassName: - description: If specified, the pod's priorityClassName. - type: string - serviceAccountName: - description: If specified, the pod's service account - type: string - tolerations: - description: If specified, the pod's tolerations. - type: array - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - type: object - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - type: integer - format: int64 - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - serviceType: - description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort. - type: string - selector: - description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead. - type: object - properties: - dnsNames: - description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - dnsZones: - description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected. - type: array - items: - type: string - matchLabels: - description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to. - type: object - additionalProperties: - type: string - ca: - description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager. - type: object - required: - - secretName - properties: - crlDistributionPoints: - description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set. - type: array - items: - type: string - ocspServers: - description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org". - type: array - items: - type: string - secretName: - description: SecretName is the name of the secret used to sign Certificates issued by this Issuer. - type: string - selfSigned: - description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object. - type: object - properties: - crlDistributionPoints: - description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings. - type: array - items: - type: string - vault: - description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend. - type: object - required: - - auth - - path - - server - properties: - auth: - description: Auth configures how cert-manager authenticates with the Vault server. - type: object - properties: - appRole: - description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource. - type: object - required: - - path - - roleId - - secretRef - properties: - path: - description: 'Path where the App Role authentication backend is mounted in Vault, e.g: "approle"' - type: string - roleId: - description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault. - type: string - secretRef: - description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - kubernetes: - description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server. - type: object - required: - - role - - secretRef - properties: - mountPath: - description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used. - type: string - role: - description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies. - type: string - secretRef: - description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - tokenSecretRef: - description: TokenSecretRef authenticates with Vault by presenting a token. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - caBundle: - description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection. - type: string - format: byte - caBundleSecretRef: - description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces' - type: string - path: - description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".' - type: string - server: - description: 'Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".' - type: string - venafi: - description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone. - type: object - required: - - zone - properties: - cloud: - description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified. - type: object - required: - - apiTokenSecretRef - properties: - apiTokenSecretRef: - description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - url: - description: URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1". - type: string - tpp: - description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified. - type: object - required: - - credentialsRef - - url - properties: - caBundle: - description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates. - type: string - format: byte - credentialsRef: - description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'. - type: object - required: - - name - properties: - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - url: - description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".' - type: string - zone: - description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required. - type: string - status: - description: Status of the Issuer. This is set and managed automatically. - type: object - properties: - acme: - description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates. - type: object - properties: - lastRegisteredEmail: - description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer - type: string - uri: - description: URI is the unique account identifier, which can also be used to retrieve account details from the CA - type: string - conditions: - description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`. - type: array - items: - description: IssuerCondition contains condition information for an Issuer. - type: object - required: - - status - - type - properties: - lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - type: string - format: date-time - message: - description: Message is a human readable description of the details of the last transition, complementing reason. - type: string - observedGeneration: - description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer. - type: integer - format: int64 - reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of (`True`, `False`, `Unknown`). - type: string - enum: - - "True" - - "False" - - Unknown - type: - description: Type of the condition, known values are (`Ready`). - type: string - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - served: true - storage: true ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: certificates.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: cert-manager.io - names: - kind: Certificate - listKind: CertificateList - plural: certificates - shortNames: - - cert - - certs - singular: certificate - categories: - - cert-manager - scope: Namespaced - versions: - - name: v1 - subresources: - status: {} - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .spec.secretName - name: Secret - type: string - - jsonPath: .spec.issuerRef.name - name: Issuer - priority: 1 - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - priority: 1 - type: string - - jsonPath: .metadata.creationTimestamp - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - name: Age - type: date - schema: - openAPIV3Schema: - description: "A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`)." - type: object - required: - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Desired state of the Certificate resource. - type: object - required: - - issuerRef - - secretName - properties: - additionalOutputFormats: - description: AdditionalOutputFormats defines extra output formats of the private key and signed certificate chain to be written to this Certificate's target Secret. This is an Alpha Feature and is only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true` option on both the controller and webhook components. - type: array - items: - description: CertificateAdditionalOutputFormat defines an additional output format of a Certificate resource. These contain supplementary data formats of the signed certificate chain and paired private key. - type: object - required: - - type - properties: - type: - description: Type is the name of the format type that should be written to the Certificate's target Secret. - type: string - enum: - - DER - - CombinedPEM - commonName: - description: 'CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4' - type: string - dnsNames: - description: DNSNames is a list of DNS subjectAltNames to be set on the Certificate. - type: array - items: - type: string - duration: - description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration - type: string - emailAddresses: - description: EmailAddresses is a list of email subjectAltNames to be set on the Certificate. - type: array - items: - type: string - encodeUsagesInRequest: - description: EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest - type: boolean - ipAddresses: - description: IPAddresses is a list of IP address subjectAltNames to be set on the Certificate. - type: array - items: - type: string - isCA: - description: IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`. - type: boolean - issuerRef: - description: IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. - type: object - required: - - name - properties: - group: - description: Group of the resource being referred to. - type: string - kind: - description: Kind of the resource being referred to. - type: string - name: - description: Name of the resource being referred to. - type: string - keystores: - description: Keystores configures additional keystore output formats stored in the `secretName` Secret resource. - type: object - properties: - jks: - description: JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource. - type: object - required: - - create - - passwordSecretRef - properties: - create: - description: Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.jks` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority - type: boolean - passwordSecretRef: - description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - pkcs12: - description: PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource. - type: object - required: - - create - - passwordSecretRef - properties: - create: - description: Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.p12` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority - type: boolean - passwordSecretRef: - description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore. - type: object - required: - - name - properties: - key: - description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required. - type: string - name: - description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - literalSubject: - description: LiteralSubject is an LDAP formatted string that represents the [X.509 Subject field](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6). Use this *instead* of the Subject field if you need to ensure the correct ordering of the RDN sequence, such as when issuing certs for LDAP authentication. See https://github.com/cert-manager/cert-manager/issues/3203, https://github.com/cert-manager/cert-manager/issues/4424. This field is alpha level and is only supported by cert-manager installations where LiteralCertificateSubject feature gate is enabled on both cert-manager controller and webhook. - type: string - privateKey: - description: Options to control private keys used for the Certificate. - type: object - properties: - algorithm: - description: Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm. key size is ignored when using the `Ed25519` key algorithm. - type: string - enum: - - RSA - - ECDSA - - Ed25519 - encoding: - description: The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified. - type: string - enum: - - PKCS1 - - PKCS8 - rotationPolicy: - description: RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility. - type: string - enum: - - Never - - Always - size: - description: Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. If `algorithm` is set to `Ed25519`, Size is ignored. No other values are allowed. - type: integer - renewBefore: - description: How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration - type: string - revisionHistoryLimit: - description: revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`. - type: integer - format: int32 - secretName: - description: SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer. - type: string - secretTemplate: - description: SecretTemplate defines annotations and labels to be copied to the Certificate's Secret. Labels and annotations on the Secret will be changed as they appear on the SecretTemplate when added or removed. SecretTemplate annotations are added in conjunction with, and cannot overwrite, the base set of annotations cert-manager sets on the Certificate's Secret. - type: object - properties: - annotations: - description: Annotations is a key value map to be copied to the target Kubernetes Secret. - type: object - additionalProperties: - type: string - labels: - description: Labels is a key value map to be copied to the target Kubernetes Secret. - type: object - additionalProperties: - type: string - subject: - description: Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name). - type: object - properties: - countries: - description: Countries to be used on the Certificate. - type: array - items: - type: string - localities: - description: Cities to be used on the Certificate. - type: array - items: - type: string - organizationalUnits: - description: Organizational Units to be used on the Certificate. - type: array - items: - type: string - organizations: - description: Organizations to be used on the Certificate. - type: array - items: - type: string - postalCodes: - description: Postal codes to be used on the Certificate. - type: array - items: - type: string - provinces: - description: State/Provinces to be used on the Certificate. - type: array - items: - type: string - serialNumber: - description: Serial number to be used on the Certificate. - type: string - streetAddresses: - description: Street addresses to be used on the Certificate. - type: array - items: - type: string - uris: - description: URIs is a list of URI subjectAltNames to be set on the Certificate. - type: array - items: - type: string - usages: - description: Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified. - type: array - items: - description: "KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \n Valid KeyUsage values are as follows: \"signing\", \"digital signature\", \"content commitment\", \"key encipherment\", \"key agreement\", \"data encipherment\", \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\", \"server auth\", \"client auth\", \"code signing\", \"email protection\", \"s/mime\", \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\", \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\"" - type: string - enum: - - signing - - digital signature - - content commitment - - key encipherment - - key agreement - - data encipherment - - cert sign - - crl sign - - encipher only - - decipher only - - any - - server auth - - client auth - - code signing - - email protection - - s/mime - - ipsec end system - - ipsec tunnel - - ipsec user - - timestamping - - ocsp signing - - microsoft sgc - - netscape sgc - status: - description: Status of the Certificate. This is set and managed automatically. - type: object - properties: - conditions: - description: List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`. - type: array - items: - description: CertificateCondition contains condition information for an Certificate. - type: object - required: - - status - - type - properties: - lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - type: string - format: date-time - message: - description: Message is a human readable description of the details of the last transition, complementing reason. - type: string - observedGeneration: - description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate. - type: integer - format: int64 - reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of (`True`, `False`, `Unknown`). - type: string - enum: - - "True" - - "False" - - Unknown - type: - description: Type of the condition, known values are (`Ready`, `Issuing`). - type: string - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - failedIssuanceAttempts: - description: The number of continuous failed issuance attempts up till now. This field gets removed (if set) on a successful issuance and gets set to 1 if unset and an issuance has failed. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1). - type: integer - lastFailureTime: - description: LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time. - type: string - format: date-time - nextPrivateKeySecretName: - description: The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False. - type: string - notAfter: - description: The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`. - type: string - format: date-time - notBefore: - description: The time after which the certificate stored in the secret named by this resource in spec.secretName is valid. - type: string - format: date-time - renewalTime: - description: RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled. - type: string - format: date-time - revision: - description: "The current 'revision' of the certificate as issued. \n When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field. \n Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate. \n Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field." - type: integer - served: true - storage: true ---- -# Source: cert-manager/templates/crds.yaml -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: orders.acme.cert-manager.io - labels: - app: 'cert-manager' - app.kubernetes.io/name: 'cert-manager' - app.kubernetes.io/instance: 'cert-manager' - # Generated labels - app.kubernetes.io/version: "v1.10.1" -spec: - group: acme.cert-manager.io - names: - kind: Order - listKind: OrderList - plural: orders - singular: order - categories: - - cert-manager - - cert-manager-acme - scope: Namespaced - versions: - - name: v1 - subresources: - status: {} - additionalPrinterColumns: - - jsonPath: .status.state - name: State - type: string - - jsonPath: .spec.issuerRef.name - name: Issuer - priority: 1 - type: string - - jsonPath: .status.reason - name: Reason - priority: 1 - type: string - - jsonPath: .metadata.creationTimestamp - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - name: Age - type: date - schema: - openAPIV3Schema: - description: Order is a type to represent an Order with an ACME server - type: object - required: - - metadata - - spec - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - type: object - required: - - issuerRef - - request - properties: - commonName: - description: CommonName is the common name as specified on the DER encoded CSR. If specified, this value must also be present in `dnsNames` or `ipAddresses`. This field must match the corresponding field on the DER encoded CSR. - type: string - dnsNames: - description: DNSNames is a list of DNS names that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR. - type: array - items: - type: string - duration: - description: Duration is the duration for the not after date for the requested certificate. this is set on order creation as pe the ACME spec. - type: string - ipAddresses: - description: IPAddresses is a list of IP addresses that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR. - type: array - items: - type: string - issuerRef: - description: IssuerRef references a properly configured ACME-type Issuer which should be used to create this Order. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Order will be marked as failed. - type: object - required: - - name - properties: - group: - description: Group of the resource being referred to. - type: string - kind: - description: Kind of the resource being referred to. - type: string - name: - description: Name of the resource being referred to. - type: string - request: - description: Certificate signing request bytes in DER encoding. This will be used when finalizing the order. This field must be set on the order. - type: string - format: byte - status: - type: object - properties: - authorizations: - description: Authorizations contains data returned from the ACME server on what authorizations must be completed in order to validate the DNS names specified on the Order. - type: array - items: - description: ACMEAuthorization contains data returned from the ACME server on an authorization that must be completed in order validate a DNS name on an ACME Order resource. - type: object - required: - - url - properties: - challenges: - description: Challenges specifies the challenge types offered by the ACME server. One of these challenge types will be selected when validating the DNS name and an appropriate Challenge resource will be created to perform the ACME challenge process. - type: array - items: - description: Challenge specifies a challenge offered by the ACME server for an Order. An appropriate Challenge resource can be created to perform the ACME challenge process. - type: object - required: - - token - - type - - url - properties: - token: - description: Token is the token that must be presented for this challenge. This is used to compute the 'key' that must also be presented. - type: string - type: - description: Type is the type of challenge being offered, e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is the raw value retrieved from the ACME server. Only 'http-01' and 'dns-01' are supported by cert-manager, other values will be ignored. - type: string - url: - description: URL is the URL of this challenge. It can be used to retrieve additional metadata about the Challenge from the ACME server. - type: string - identifier: - description: Identifier is the DNS name to be validated as part of this authorization - type: string - initialState: - description: InitialState is the initial state of the ACME authorization when first fetched from the ACME server. If an Authorization is already 'valid', the Order controller will not create a Challenge resource for the authorization. This will occur when working with an ACME server that enables 'authz reuse' (such as Let's Encrypt's production endpoint). If not set and 'identifier' is set, the state is assumed to be pending and a Challenge will be created. - type: string - enum: - - valid - - ready - - pending - - processing - - invalid - - expired - - errored - url: - description: URL is the URL of the Authorization that must be completed - type: string - wildcard: - description: Wildcard will be true if this authorization is for a wildcard DNS name. If this is true, the identifier will be the *non-wildcard* version of the DNS name. For example, if '*.example.com' is the DNS name being validated, this field will be 'true' and the 'identifier' field will be 'example.com'. - type: boolean - certificate: - description: Certificate is a copy of the PEM encoded certificate for this Order. This field will be populated after the order has been successfully finalized with the ACME server, and the order has transitioned to the 'valid' state. - type: string - format: byte - failureTime: - description: FailureTime stores the time that this order failed. This is used to influence garbage collection and back-off. - type: string - format: date-time - finalizeURL: - description: FinalizeURL of the Order. This is used to obtain certificates for this order once it has been completed. - type: string - reason: - description: Reason optionally provides more information about a why the order is in the current state. - type: string - state: - description: State contains the current state of this Order resource. States 'success' and 'expired' are 'final' - type: string - enum: - - valid - - ready - - pending - - processing - - invalid - - expired - - errored - url: - description: URL of the Order. This will initially be empty when the resource is first created. The Order controller will populate this field when the Order is first processed. This field will be immutable after it is initially set. - type: string - served: true - storage: true ---- -# Source: cert-manager/templates/cainjector-serviceaccount.yaml -apiVersion: v1 -kind: ServiceAccount -automountServiceAccountToken: true -metadata: - name: cert-manager-cainjector - namespace: cert-manager - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" ---- -# Source: cert-manager/templates/serviceaccount.yaml -apiVersion: v1 -kind: ServiceAccount -automountServiceAccountToken: true -metadata: - name: cert-manager - namespace: cert-manager - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" ---- -# Source: cert-manager/templates/webhook-serviceaccount.yaml -apiVersion: v1 -kind: ServiceAccount -automountServiceAccountToken: true -metadata: - name: cert-manager-webhook - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" ---- -# Source: cert-manager/templates/webhook-config.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: cert-manager-webhook - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" -data: ---- -# Source: cert-manager/templates/cainjector-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-cainjector - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["certificates"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["get", "create", "update", "patch"] - - apiGroups: ["admissionregistration.k8s.io"] - resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: ["apiregistration.k8s.io"] - resources: ["apiservices"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["get", "list", "watch", "update"] ---- -# Source: cert-manager/templates/rbac.yaml -# Issuer controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-issuers - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["issuers", "issuers/status"] - verbs: ["update", "patch"] - - apiGroups: ["cert-manager.io"] - resources: ["issuers"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch", "create", "update", "delete"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] ---- -# Source: cert-manager/templates/rbac.yaml -# ClusterIssuer controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-clusterissuers - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["clusterissuers", "clusterissuers/status"] - verbs: ["update", "patch"] - - apiGroups: ["cert-manager.io"] - resources: ["clusterissuers"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch", "create", "update", "delete"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] ---- -# Source: cert-manager/templates/rbac.yaml -# Certificates controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-certificates - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificates/status", "certificaterequests", "certificaterequests/status"] - verbs: ["update", "patch"] - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificaterequests", "clusterissuers", "issuers"] - verbs: ["get", "list", "watch"] - # We require these rules to support users with the OwnerReferencesPermissionEnforcement - # admission controller enabled: - # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement - - apiGroups: ["cert-manager.io"] - resources: ["certificates/finalizers", "certificaterequests/finalizers"] - verbs: ["update"] - - apiGroups: ["acme.cert-manager.io"] - resources: ["orders"] - verbs: ["create", "delete", "get", "list", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch", "create", "update", "delete", "patch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] ---- -# Source: cert-manager/templates/rbac.yaml -# Orders controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-orders - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["acme.cert-manager.io"] - resources: ["orders", "orders/status"] - verbs: ["update", "patch"] - - apiGroups: ["acme.cert-manager.io"] - resources: ["orders", "challenges"] - verbs: ["get", "list", "watch"] - - apiGroups: ["cert-manager.io"] - resources: ["clusterissuers", "issuers"] - verbs: ["get", "list", "watch"] - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges"] - verbs: ["create", "delete"] - # We require these rules to support users with the OwnerReferencesPermissionEnforcement - # admission controller enabled: - # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement - - apiGroups: ["acme.cert-manager.io"] - resources: ["orders/finalizers"] - verbs: ["update"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] ---- -# Source: cert-manager/templates/rbac.yaml -# Challenges controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-challenges - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - # Use to update challenge resource status - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges", "challenges/status"] - verbs: ["update", "patch"] - # Used to watch challenge resources - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges"] - verbs: ["get", "list", "watch"] - # Used to watch challenges, issuer and clusterissuer resources - - apiGroups: ["cert-manager.io"] - resources: ["issuers", "clusterissuers"] - verbs: ["get", "list", "watch"] - # Need to be able to retrieve ACME account private key to complete challenges - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch"] - # Used to create events - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] - # HTTP01 rules - - apiGroups: [""] - resources: ["pods", "services"] - verbs: ["get", "list", "watch", "create", "delete"] - - apiGroups: ["networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get", "list", "watch", "create", "delete", "update"] - - apiGroups: [ "gateway.networking.k8s.io" ] - resources: [ "httproutes" ] - verbs: ["get", "list", "watch", "create", "delete", "update"] - # We require the ability to specify a custom hostname when we are creating - # new ingress resources. - # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148 - - apiGroups: ["route.openshift.io"] - resources: ["routes/custom-host"] - verbs: ["create"] - # We require these rules to support users with the OwnerReferencesPermissionEnforcement - # admission controller enabled: - # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges/finalizers"] - verbs: ["update"] - # DNS01 rules (duplicated above) - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch"] ---- -# Source: cert-manager/templates/rbac.yaml -# ingress-shim controller role -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-ingress-shim - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificaterequests"] - verbs: ["create", "update", "delete"] - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificaterequests", "issuers", "clusterissuers"] - verbs: ["get", "list", "watch"] - - apiGroups: ["networking.k8s.io"] - resources: ["ingresses"] - verbs: ["get", "list", "watch"] - # We require these rules to support users with the OwnerReferencesPermissionEnforcement - # admission controller enabled: - # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement - - apiGroups: ["networking.k8s.io"] - resources: ["ingresses/finalizers"] - verbs: ["update"] - - apiGroups: ["gateway.networking.k8s.io"] - resources: ["gateways", "httproutes"] - verbs: ["get", "list", "watch"] - - apiGroups: ["gateway.networking.k8s.io"] - resources: ["gateways/finalizers", "httproutes/finalizers"] - verbs: ["update"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "patch"] ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-view - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificaterequests", "issuers"] - verbs: ["get", "list", "watch"] - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges", "orders"] - verbs: ["get", "list", "watch"] ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-edit - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" - rbac.authorization.k8s.io/aggregate-to-edit: "true" - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["certificates", "certificaterequests", "issuers"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] - - apiGroups: ["cert-manager.io"] - resources: ["certificates/status"] - verbs: ["update"] - - apiGroups: ["acme.cert-manager.io"] - resources: ["challenges", "orders"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] ---- -# Source: cert-manager/templates/rbac.yaml -# Permission to approve CertificateRequests referencing cert-manager.io Issuers and ClusterIssuers -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-approve:cert-manager-io - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cert-manager" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["cert-manager.io"] - resources: ["signers"] - verbs: ["approve"] - resourceNames: ["issuers.cert-manager.io/*", "clusterissuers.cert-manager.io/*"] ---- -# Source: cert-manager/templates/rbac.yaml -# Permission to: -# - Update and sign CertificatSigningeRequests referencing cert-manager.io Issuers and ClusterIssuers -# - Perform SubjectAccessReviews to test whether users are able to reference Namespaced Issuers -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-controller-certificatesigningrequests - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cert-manager" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["certificates.k8s.io"] - resources: ["certificatesigningrequests"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: ["certificates.k8s.io"] - resources: ["certificatesigningrequests/status"] - verbs: ["update", "patch"] - - apiGroups: ["certificates.k8s.io"] - resources: ["signers"] - resourceNames: ["issuers.cert-manager.io/*", "clusterissuers.cert-manager.io/*"] - verbs: ["sign"] - - apiGroups: ["authorization.k8s.io"] - resources: ["subjectaccessreviews"] - verbs: ["create"] ---- -# Source: cert-manager/templates/webhook-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cert-manager-webhook:subjectaccessreviews - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -rules: -- apiGroups: ["authorization.k8s.io"] - resources: ["subjectaccessreviews"] - verbs: ["create"] ---- -# Source: cert-manager/templates/cainjector-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-cainjector - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-cainjector -subjects: - - name: cert-manager-cainjector - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-issuers - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-issuers -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-clusterissuers - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-clusterissuers -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-certificates - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-certificates -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-orders - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-orders -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-challenges - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-challenges -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-ingress-shim - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-ingress-shim -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-approve:cert-manager-io - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cert-manager" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-approve:cert-manager-io -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-controller-certificatesigningrequests - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cert-manager" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-controller-certificatesigningrequests -subjects: - - name: cert-manager - namespace: cert-manager - kind: ServiceAccount ---- -# Source: cert-manager/templates/webhook-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: cert-manager-webhook:subjectaccessreviews - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cert-manager-webhook:subjectaccessreviews -subjects: -- apiGroup: "" - kind: ServiceAccount - name: cert-manager-webhook - namespace: cert-manager ---- -# Source: cert-manager/templates/cainjector-rbac.yaml -# leader election rules -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: cert-manager-cainjector:leaderelection - namespace: kube-system - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" -rules: - # Used for leader election by the controller - # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller - # see cmd/cainjector/start.go#L113 - # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller - # see cmd/cainjector/start.go#L137 - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - resourceNames: ["cert-manager-cainjector-leader-election", "cert-manager-cainjector-leader-election-core"] - verbs: ["get", "update", "patch"] - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["create"] ---- -# Source: cert-manager/templates/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: cert-manager:leaderelection - namespace: kube-system - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -rules: - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - resourceNames: ["cert-manager-controller"] - verbs: ["get", "update", "patch"] - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["create"] ---- -# Source: cert-manager/templates/webhook-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: cert-manager-webhook:dynamic-serving - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -rules: -- apiGroups: [""] - resources: ["secrets"] - resourceNames: - - 'cert-manager-webhook-ca' - verbs: ["get", "list", "watch", "update"] -# It's not possible to grant CREATE permission on a single resourceName. -- apiGroups: [""] - resources: ["secrets"] - verbs: ["create"] ---- -# Source: cert-manager/templates/cainjector-rbac.yaml -# grant cert-manager permission to manage the leaderelection configmap in the -# leader election namespace -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: cert-manager-cainjector:leaderelection - namespace: kube-system - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: cert-manager-cainjector:leaderelection -subjects: - - kind: ServiceAccount - name: cert-manager-cainjector - namespace: cert-manager ---- -# Source: cert-manager/templates/rbac.yaml -# grant cert-manager permission to manage the leaderelection configmap in the -# leader election namespace -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: cert-manager:leaderelection - namespace: kube-system - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: cert-manager:leaderelection -subjects: - - apiGroup: "" - kind: ServiceAccount - name: cert-manager - namespace: cert-manager ---- -# Source: cert-manager/templates/webhook-rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: cert-manager-webhook:dynamic-serving - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: cert-manager-webhook:dynamic-serving -subjects: -- apiGroup: "" - kind: ServiceAccount - name: cert-manager-webhook - namespace: cert-manager ---- -# Source: cert-manager/templates/service.yaml -apiVersion: v1 -kind: Service -metadata: - name: cert-manager - namespace: cert-manager - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -spec: - type: ClusterIP - ports: - - protocol: TCP - port: 9402 - name: tcp-prometheus-servicemonitor - targetPort: 9402 - selector: - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" ---- -# Source: cert-manager/templates/webhook-service.yaml -apiVersion: v1 -kind: Service -metadata: - name: cert-manager-webhook - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -spec: - type: ClusterIP - ports: - - name: https - port: 443 - protocol: TCP - targetPort: "https" - selector: - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" ---- -# Source: cert-manager/templates/cainjector-deployment.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cert-manager-cainjector - namespace: cert-manager - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - template: - metadata: - labels: - app: cainjector - app.kubernetes.io/name: cainjector - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "cainjector" - app.kubernetes.io/version: "v1.10.1" - spec: - serviceAccountName: cert-manager-cainjector - securityContext: - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - containers: - - name: cert-manager-cainjector - image: "quay.io/jetstack/cert-manager-cainjector:v1.10.1" - imagePullPolicy: IfNotPresent - args: - - --v=2 - - --leader-election-namespace=kube-system - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - nodeSelector: - kubernetes.io/os: linux ---- -# Source: cert-manager/templates/deployment.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cert-manager - namespace: cert-manager - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - template: - metadata: - labels: - app: cert-manager - app.kubernetes.io/name: cert-manager - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "controller" - app.kubernetes.io/version: "v1.10.1" - annotations: - prometheus.io/path: "/metrics" - prometheus.io/scrape: 'true' - prometheus.io/port: '9402' - spec: - serviceAccountName: cert-manager - securityContext: - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - containers: - - name: cert-manager-controller - image: "quay.io/jetstack/cert-manager-controller:v1.10.1" - imagePullPolicy: IfNotPresent - args: - - --v=2 - - --cluster-resource-namespace=$(POD_NAMESPACE) - - --leader-election-namespace=kube-system - ports: - - containerPort: 9402 - name: http-metrics - protocol: TCP - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - nodeSelector: - kubernetes.io/os: linux ---- -# Source: cert-manager/templates/webhook-deployment.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cert-manager-webhook - namespace: cert-manager - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - template: - metadata: - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" - spec: - serviceAccountName: cert-manager-webhook - securityContext: - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - containers: - - name: cert-manager-webhook - image: "quay.io/jetstack/cert-manager-webhook:v1.10.1" - imagePullPolicy: IfNotPresent - args: - - --v=2 - - --secure-port=10250 - - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE) - - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca - - --dynamic-serving-dns-names=cert-manager-webhook - - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE) - - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc - - ports: - - name: https - protocol: TCP - containerPort: 10250 - - name: healthcheck - protocol: TCP - containerPort: 6080 - livenessProbe: - httpGet: - path: /livez - port: 6080 - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 1 - successThreshold: 1 - failureThreshold: 3 - readinessProbe: - httpGet: - path: /healthz - port: 6080 - scheme: HTTP - initialDelaySeconds: 5 - periodSeconds: 5 - timeoutSeconds: 1 - successThreshold: 1 - failureThreshold: 3 - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - nodeSelector: - kubernetes.io/os: linux ---- -# Source: cert-manager/templates/webhook-mutating-webhook.yaml -apiVersion: admissionregistration.k8s.io/v1 -kind: MutatingWebhookConfiguration -metadata: - name: cert-manager-webhook - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" - annotations: - cert-manager.io/inject-ca-from-secret: "cert-manager/cert-manager-webhook-ca" -webhooks: - - name: webhook.cert-manager.io - rules: - - apiGroups: - - "cert-manager.io" - - "acme.cert-manager.io" - apiVersions: - - "v1" - operations: - - CREATE - - UPDATE - resources: - - "*/*" - admissionReviewVersions: ["v1"] - # This webhook only accepts v1 cert-manager resources. - # Equivalent matchPolicy ensures that non-v1 resource requests are sent to - # this webhook (after the resources have been converted to v1). - matchPolicy: Equivalent - timeoutSeconds: 10 - failurePolicy: Fail - # Only include 'sideEffects' field in Kubernetes 1.12+ - sideEffects: None - clientConfig: - service: - name: cert-manager-webhook - namespace: cert-manager - path: /mutate ---- -# Source: cert-manager/templates/webhook-validating-webhook.yaml -apiVersion: admissionregistration.k8s.io/v1 -kind: ValidatingWebhookConfiguration -metadata: - name: cert-manager-webhook - labels: - app: webhook - app.kubernetes.io/name: webhook - app.kubernetes.io/instance: cert-manager - app.kubernetes.io/component: "webhook" - app.kubernetes.io/version: "v1.10.1" - annotations: - cert-manager.io/inject-ca-from-secret: "cert-manager/cert-manager-webhook-ca" -webhooks: - - name: webhook.cert-manager.io - namespaceSelector: - matchExpressions: - - key: "cert-manager.io/disable-validation" - operator: "NotIn" - values: - - "true" - - key: "name" - operator: "NotIn" - values: - - cert-manager - rules: - - apiGroups: - - "cert-manager.io" - - "acme.cert-manager.io" - apiVersions: - - "v1" - operations: - - CREATE - - UPDATE - resources: - - "*/*" - admissionReviewVersions: ["v1"] - # This webhook only accepts v1 cert-manager resources. - # Equivalent matchPolicy ensures that non-v1 resource requests are sent to - # this webhook (after the resources have been converted to v1). - matchPolicy: Equivalent - timeoutSeconds: 10 - failurePolicy: Fail - sideEffects: None - clientConfig: - service: - name: cert-manager-webhook - namespace: cert-manager - path: /validate diff --git a/config/vendor/flux-source-controller-v0.38.2.yaml b/config/vendor/flux-source-controller-v0.38.2.yaml deleted file mode 100644 index 9cc7bec..0000000 --- a/config/vendor/flux-source-controller-v0.38.2.yaml +++ /dev/null @@ -1,3063 +0,0 @@ ---- -# This manifest was generated by flux. DO NOT EDIT. -# Flux Version: v0.38.2 -# Components: source-controller -apiVersion: v1 -kind: Namespace -metadata: - labels: - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - pod-security.kubernetes.io/warn: restricted - pod-security.kubernetes.io/warn-version: latest - name: flux-system ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: buckets.source.toolkit.fluxcd.io -spec: - group: source.toolkit.fluxcd.io - names: - kind: Bucket - listKind: BucketList - plural: buckets - singular: bucket - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.endpoint - name: Endpoint - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Bucket is the Schema for the buckets API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: BucketSpec defines the desired state of an S3 compatible - bucket - properties: - accessFrom: - description: AccessFrom defines an Access Control List for allowing - cross-namespace references to this object. - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - bucketName: - description: The bucket name. - type: string - endpoint: - description: The bucket endpoint address. - type: string - ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. - type: string - insecure: - description: Insecure allows connecting to a non-TLS S3 HTTP endpoint. - type: boolean - interval: - description: The interval at which to check for bucket updates. - type: string - provider: - default: generic - description: The S3 compatible storage provider name, default ('generic'). - enum: - - generic - - aws - - gcp - type: string - region: - description: The bucket region. - type: string - secretRef: - description: The name of the secret containing authentication credentials - for the Bucket. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the reconciliation - of this source. - type: boolean - timeout: - default: 60s - description: The timeout for download operations, defaults to 60s. - type: string - required: - - bucketName - - endpoint - - interval - type: object - status: - default: - observedGeneration: -1 - description: BucketStatus defines the observed state of a bucket - properties: - artifact: - description: Artifact represents the output of the last successful - Bucket sync. - properties: - checksum: - description: Checksum is the SHA256 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this artifact. - type: string - revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the Bucket. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output of the - last Bucket sync. - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.endpoint - name: Endpoint - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - name: v1beta2 - schema: - openAPIV3Schema: - description: Bucket is the Schema for the buckets API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: BucketSpec specifies the required configuration to produce - an Artifact for an object storage bucket. - properties: - accessFrom: - description: 'AccessFrom specifies an Access Control List for allowing - cross-namespace references to this object. NOTE: Not implemented, - provisional as of https://github.com/fluxcd/flux2/pull/2092' - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - bucketName: - description: BucketName is the name of the object storage bucket. - type: string - endpoint: - description: Endpoint is the object storage address the BucketName - is located at. - type: string - ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. - type: string - insecure: - description: Insecure allows connecting to a non-TLS HTTP Endpoint. - type: boolean - interval: - description: Interval at which to check the Endpoint for updates. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ - type: string - provider: - default: generic - description: Provider of the object storage bucket. Defaults to 'generic', - which expects an S3 (API) compatible object storage. - enum: - - generic - - aws - - gcp - - azure - type: string - region: - description: Region of the Endpoint where the BucketName is located - in. - type: string - secretRef: - description: SecretRef specifies the Secret containing authentication - credentials for the Bucket. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: Suspend tells the controller to suspend the reconciliation - of this Bucket. - type: boolean - timeout: - default: 60s - description: Timeout for fetch operations, defaults to 60s. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m))+$ - type: string - required: - - bucketName - - endpoint - - interval - type: object - status: - default: - observedGeneration: -1 - description: BucketStatus records the observed state of a Bucket. - properties: - artifact: - description: Artifact represents the last successful Bucket reconciliation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI annotations. - type: object - path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the Bucket. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation of - the Bucket object. - format: int64 - type: integer - observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. - type: string - url: - description: URL is the dynamic fetch link for the latest Artifact. - It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact - data is recommended. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: gitrepositories.source.toolkit.fluxcd.io -spec: - group: source.toolkit.fluxcd.io - names: - kind: GitRepository - listKind: GitRepositoryList - plural: gitrepositories - shortNames: - - gitrepo - singular: gitrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: GitRepository is the Schema for the gitrepositories API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: GitRepositorySpec defines the desired state of a Git repository. - properties: - accessFrom: - description: AccessFrom defines an Access Control List for allowing - cross-namespace references to this object. - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - gitImplementation: - default: go-git - description: Determines which git client library to use. Defaults - to go-git, valid values are ('go-git', 'libgit2'). - enum: - - go-git - - libgit2 - type: string - ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. - type: string - include: - description: Extra git repositories to map into the repository - items: - description: GitRepositoryInclude defines a source with a from and - to path. - properties: - fromPath: - description: The path to copy contents from, defaults to the - root directory. - type: string - repository: - description: Reference to a GitRepository to include. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - toPath: - description: The path to copy contents to, defaults to the name - of the source ref. - type: string - required: - - repository - type: object - type: array - interval: - description: The interval at which to check for repository updates. - type: string - recurseSubmodules: - description: When enabled, after the clone is created, initializes - all submodules within, using their default settings. This option - is available only when using the 'go-git' GitImplementation. - type: boolean - ref: - description: The Git reference to checkout and monitor for changes, - defaults to master branch. - properties: - branch: - description: The Git branch to checkout, defaults to master. - type: string - commit: - description: The Git commit SHA to checkout, if specified Tag - filters will be ignored. - type: string - semver: - description: The Git tag semver expression, takes precedence over - Tag. - type: string - tag: - description: The Git tag to checkout, takes precedence over Branch. - type: string - type: object - secretRef: - description: The secret name containing the Git credentials. For HTTPS - repositories the secret must contain username and password fields. - For SSH repositories the secret must contain identity and known_hosts - fields. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the reconciliation - of this source. - type: boolean - timeout: - default: 60s - description: The timeout for remote Git operations like cloning, defaults - to 60s. - type: string - url: - description: The repository URL, can be a HTTP/S or SSH address. - pattern: ^(http|https|ssh)://.*$ - type: string - verify: - description: Verify OpenPGP signature for the Git commit HEAD points - to. - properties: - mode: - description: Mode describes what git object should be verified, - currently ('head'). - enum: - - head - type: string - secretRef: - description: The secret name containing the public keys of all - trusted Git authors. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - required: - - mode - type: object - required: - - interval - - url - type: object - status: - default: - observedGeneration: -1 - description: GitRepositoryStatus defines the observed state of a Git repository. - properties: - artifact: - description: Artifact represents the output of the last successful - repository sync. - properties: - checksum: - description: Checksum is the SHA256 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this artifact. - type: string - revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the GitRepository. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - includedArtifacts: - description: IncludedArtifacts represents the included artifacts from - the last successful repository sync. - items: - description: Artifact represents the output of a source synchronisation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this artifact. - type: string - revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output of the - last repository sync. - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - name: v1beta2 - schema: - openAPIV3Schema: - description: GitRepository is the Schema for the gitrepositories API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: GitRepositorySpec specifies the required configuration to - produce an Artifact for a Git repository. - properties: - accessFrom: - description: 'AccessFrom specifies an Access Control List for allowing - cross-namespace references to this object. NOTE: Not implemented, - provisional as of https://github.com/fluxcd/flux2/pull/2092' - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - gitImplementation: - default: go-git - description: 'GitImplementation specifies which Git client library - implementation to use. Defaults to ''go-git'', valid values are - (''go-git'', ''libgit2''). Deprecated: gitImplementation is deprecated - now that ''go-git'' is the only supported implementation.' - enum: - - go-git - - libgit2 - type: string - ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. - type: string - include: - description: Include specifies a list of GitRepository resources which - Artifacts should be included in the Artifact produced for this GitRepository. - items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. - properties: - fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. - type: string - repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. - type: string - required: - - repository - type: object - type: array - interval: - description: Interval at which to check the GitRepository for updates. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ - type: string - recurseSubmodules: - description: RecurseSubmodules enables the initialization of all submodules - within the GitRepository as cloned from the URL, using their default - settings. This option is available only when using the 'go-git' - GitImplementation. - type: boolean - ref: - description: Reference specifies the Git reference to resolve and - monitor for changes, defaults to the 'master' branch. - properties: - branch: - description: "Branch to check out, defaults to 'master' if no - other field is defined. \n When GitRepositorySpec.GitImplementation - is set to 'go-git', a shallow clone of the specified branch - is performed." - type: string - commit: - description: "Commit SHA to check out, takes precedence over all - reference fields. \n When GitRepositorySpec.GitImplementation - is set to 'go-git', this can be combined with Branch to shallow - clone the branch, in which the commit is expected to exist." - type: string - semver: - description: SemVer tag expression to check out, takes precedence - over Tag. - type: string - tag: - description: Tag to check out, takes precedence over Branch. - type: string - type: object - secretRef: - description: SecretRef specifies the Secret containing authentication - credentials for the GitRepository. For HTTPS repositories the Secret - must contain 'username' and 'password' fields. For SSH repositories - the Secret must contain 'identity' and 'known_hosts' fields. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: Suspend tells the controller to suspend the reconciliation - of this GitRepository. - type: boolean - timeout: - default: 60s - description: Timeout for Git operations like cloning, defaults to - 60s. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m))+$ - type: string - url: - description: URL specifies the Git repository URL, it can be an HTTP/S - or SSH address. - pattern: ^(http|https|ssh)://.*$ - type: string - verify: - description: Verification specifies the configuration to verify the - Git commit signature(s). - properties: - mode: - description: Mode specifies what Git object should be verified, - currently ('head'). - enum: - - head - type: string - secretRef: - description: SecretRef specifies the Secret containing the public - keys of trusted Git authors. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - required: - - mode - type: object - required: - - interval - - url - type: object - status: - default: - observedGeneration: -1 - description: GitRepositoryStatus records the observed state of a Git repository. - properties: - artifact: - description: Artifact represents the last successful GitRepository - reconciliation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI annotations. - type: object - path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the GitRepository. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - contentConfigChecksum: - description: "ContentConfigChecksum is a checksum of all the configurations - related to the content of the source artifact: - .spec.ignore - - .spec.recurseSubmodules - .spec.included and the checksum of the - included artifacts observed in .status.observedGeneration version - of the object. This can be used to determine if the content of the - included repository has changed. It has the format of `:`, - for example: `sha256:`. \n Deprecated: Replaced with explicit - fields for observed artifact content config in the status." - type: string - includedArtifacts: - description: IncludedArtifacts contains a list of the last successfully - included Artifacts as instructed by GitRepositorySpec.Include. - items: - description: Artifact represents the output of a Source reconciliation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact - file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI - annotations. - type: object - path: - description: Path is the relative file path of the Artifact. - It can be used to locate the file in the root of the Artifact - storage on the local file system of the controller managing - the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation of - the GitRepository object. - format: int64 - type: integer - observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. - type: string - observedInclude: - description: ObservedInclude is the observed list of GitRepository - resources used to to produce the current Artifact. - items: - description: GitRepositoryInclude specifies a local reference to - a GitRepository which Artifact (sub-)contents must be included, - and where they should be placed. - properties: - fromPath: - description: FromPath specifies the path to copy contents from, - defaults to the root of the Artifact. - type: string - repository: - description: GitRepositoryRef specifies the GitRepository which - Artifact contents must be included. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - toPath: - description: ToPath specifies the path to copy contents to, - defaults to the name of the GitRepositoryRef. - type: string - required: - - repository - type: object - type: array - observedRecurseSubmodules: - description: ObservedRecurseSubmodules is the observed resource submodules - configuration used to produce the current Artifact. - type: boolean - url: - description: URL is the dynamic fetch link for the latest Artifact. - It is provided on a "best effort" basis, and using the precise GitRepositoryStatus.Artifact - data is recommended. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: helmcharts.source.toolkit.fluxcd.io -spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmChart - listKind: HelmChartList - plural: helmcharts - shortNames: - - hc - singular: helmchart - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.chart - name: Chart - type: string - - jsonPath: .spec.version - name: Version - type: string - - jsonPath: .spec.sourceRef.kind - name: Source Kind - type: string - - jsonPath: .spec.sourceRef.name - name: Source Name - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmChart is the Schema for the helmcharts API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmChartSpec defines the desired state of a Helm chart. - properties: - accessFrom: - description: AccessFrom defines an Access Control List for allowing - cross-namespace references to this object. - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - chart: - description: The name or path the Helm chart is available at in the - SourceRef. - type: string - interval: - description: The interval at which to check the Source for updates. - type: string - reconcileStrategy: - default: ChartVersion - description: Determines what enables the creation of a new artifact. - Valid values are ('ChartVersion', 'Revision'). See the documentation - of the values for an explanation on their behavior. Defaults to - ChartVersion when omitted. - enum: - - ChartVersion - - Revision - type: string - sourceRef: - description: The reference to the Source the chart is available at. - properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent, valid values are ('HelmRepository', - 'GitRepository', 'Bucket'). - enum: - - HelmRepository - - GitRepository - - Bucket - type: string - name: - description: Name of the referent. - type: string - required: - - kind - - name - type: object - suspend: - description: This flag tells the controller to suspend the reconciliation - of this source. - type: boolean - valuesFile: - description: Alternative values file to use as the default chart values, - expected to be a relative path in the SourceRef. Deprecated in favor - of ValuesFiles, for backwards compatibility the file defined here - is merged before the ValuesFiles items. Ignored when omitted. - type: string - valuesFiles: - description: Alternative list of values files to use as the chart - values (values.yaml is not included by default), expected to be - a relative path in the SourceRef. Values files are merged in the - order of this list with the last file overriding the first. Ignored - when omitted. - items: - type: string - type: array - version: - default: '*' - description: The chart version semver expression, ignored for charts - from GitRepository and Bucket sources. Defaults to latest when omitted. - type: string - required: - - chart - - interval - - sourceRef - type: object - status: - default: - observedGeneration: -1 - description: HelmChartStatus defines the observed state of the HelmChart. - properties: - artifact: - description: Artifact represents the output of the last successful - chart sync. - properties: - checksum: - description: Checksum is the SHA256 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this artifact. - type: string - revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmChart. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last chart pulled. - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.chart - name: Chart - type: string - - jsonPath: .spec.version - name: Version - type: string - - jsonPath: .spec.sourceRef.kind - name: Source Kind - type: string - - jsonPath: .spec.sourceRef.name - name: Source Name - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - name: v1beta2 - schema: - openAPIV3Schema: - description: HelmChart is the Schema for the helmcharts API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmChartSpec specifies the desired state of a Helm chart. - properties: - accessFrom: - description: 'AccessFrom specifies an Access Control List for allowing - cross-namespace references to this object. NOTE: Not implemented, - provisional as of https://github.com/fluxcd/flux2/pull/2092' - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - chart: - description: Chart is the name or path the Helm chart is available - at in the SourceRef. - type: string - interval: - description: Interval is the interval at which to check the Source - for updates. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ - type: string - reconcileStrategy: - default: ChartVersion - description: ReconcileStrategy determines what enables the creation - of a new artifact. Valid values are ('ChartVersion', 'Revision'). - See the documentation of the values for an explanation on their - behavior. Defaults to ChartVersion when omitted. - enum: - - ChartVersion - - Revision - type: string - sourceRef: - description: SourceRef is the reference to the Source the chart is - available at. - properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent, valid values are ('HelmRepository', - 'GitRepository', 'Bucket'). - enum: - - HelmRepository - - GitRepository - - Bucket - type: string - name: - description: Name of the referent. - type: string - required: - - kind - - name - type: object - suspend: - description: Suspend tells the controller to suspend the reconciliation - of this source. - type: boolean - valuesFile: - description: ValuesFile is an alternative values file to use as the - default chart values, expected to be a relative path in the SourceRef. - Deprecated in favor of ValuesFiles, for backwards compatibility - the file specified here is merged before the ValuesFiles items. - Ignored when omitted. - type: string - valuesFiles: - description: ValuesFiles is an alternative list of values files to - use as the chart values (values.yaml is not included by default), - expected to be a relative path in the SourceRef. Values files are - merged in the order of this list with the last file overriding the - first. Ignored when omitted. - items: - type: string - type: array - verify: - description: Verify contains the secret name containing the trusted - public keys used to verify the signature and specifies which provider - to use to check whether OCI image is authentic. This field is only - supported when using HelmRepository source with spec.type 'oci'. - Chart dependencies, which are not bundled in the umbrella chart - artifact, are not verified. - properties: - provider: - default: cosign - description: Provider specifies the technology used to sign the - OCI Artifact. - enum: - - cosign - type: string - secretRef: - description: SecretRef specifies the Kubernetes Secret containing - the trusted public keys. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - required: - - provider - type: object - version: - default: '*' - description: Version is the chart version semver expression, ignored - for charts from GitRepository and Bucket sources. Defaults to latest - when omitted. - type: string - required: - - chart - - interval - - sourceRef - type: object - status: - default: - observedGeneration: -1 - description: HelmChartStatus records the observed state of the HelmChart. - properties: - artifact: - description: Artifact represents the output of the last successful - reconciliation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI annotations. - type: object - path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmChart. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedChartName: - description: ObservedChartName is the last observed chart name as - specified by the resolved chart reference. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation of - the HelmChart object. - format: int64 - type: integer - observedSourceArtifactRevision: - description: ObservedSourceArtifactRevision is the last observed Artifact.Revision - of the HelmChartSpec.SourceRef. - type: string - url: - description: URL is the dynamic fetch link for the latest Artifact. - It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact - data is recommended. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: helmrepositories.source.toolkit.fluxcd.io -spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmRepository - listKind: HelmRepositoryList - plural: helmrepositories - shortNames: - - helmrepo - singular: helmrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmRepository is the Schema for the helmrepositories API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmRepositorySpec defines the reference to a Helm repository. - properties: - accessFrom: - description: AccessFrom defines an Access Control List for allowing - cross-namespace references to this object. - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - interval: - description: The interval at which to check the upstream for updates. - type: string - passCredentials: - description: PassCredentials allows the credentials from the SecretRef - to be passed on to a host that does not match the host as defined - in URL. This may be required if the host of the advertised chart - URLs in the index differ from the defined URL. Enabling this should - be done with caution, as it can potentially result in credentials - getting stolen in a MITM-attack. - type: boolean - secretRef: - description: The name of the secret containing authentication credentials - for the Helm repository. For HTTP/S basic auth the secret must contain - username and password fields. For TLS the secret must contain a - certFile and keyFile, and/or caCert fields. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the reconciliation - of this source. - type: boolean - timeout: - default: 60s - description: The timeout of index downloading, defaults to 60s. - type: string - url: - description: The Helm repository URL, a valid URL contains at least - a protocol and host. - type: string - required: - - interval - - url - type: object - status: - default: - observedGeneration: -1 - description: HelmRepositoryStatus defines the observed state of the HelmRepository. - properties: - artifact: - description: Artifact represents the output of the last successful - repository sync. - properties: - checksum: - description: Checksum is the SHA256 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this artifact. - type: string - revision: - description: Revision is a human readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm index timestamp, a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmRepository. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last index fetched. - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - name: v1beta2 - schema: - openAPIV3Schema: - description: HelmRepository is the Schema for the helmrepositories API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmRepositorySpec specifies the required configuration to - produce an Artifact for a Helm repository index YAML. - properties: - accessFrom: - description: 'AccessFrom specifies an Access Control List for allowing - cross-namespace references to this object. NOTE: Not implemented, - provisional as of https://github.com/fluxcd/flux2/pull/2092' - properties: - namespaceSelectors: - description: NamespaceSelectors is the list of namespace selectors - to which this ACL applies. Items in this list are evaluated - using a logical OR operation. - items: - description: NamespaceSelector selects the namespaces to which - this ACL applies. An empty map of MatchLabels matches all - namespaces in a cluster. - properties: - matchLabels: - additionalProperties: - type: string - description: MatchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - type: array - required: - - namespaceSelectors - type: object - interval: - description: Interval at which to check the URL for updates. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ - type: string - passCredentials: - description: PassCredentials allows the credentials from the SecretRef - to be passed on to a host that does not match the host as defined - in URL. This may be required if the host of the advertised chart - URLs in the index differ from the defined URL. Enabling this should - be done with caution, as it can potentially result in credentials - getting stolen in a MITM-attack. - type: boolean - provider: - default: generic - description: Provider used for authentication, can be 'aws', 'azure', - 'gcp' or 'generic'. This field is optional, and only taken into - account if the .spec.type field is set to 'oci'. When not specified, - defaults to 'generic'. - enum: - - generic - - aws - - azure - - gcp - type: string - secretRef: - description: SecretRef specifies the Secret containing authentication - credentials for the HelmRepository. For HTTP/S basic auth the secret - must contain 'username' and 'password' fields. For TLS the secret - must contain a 'certFile' and 'keyFile', and/or 'caCert' fields. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - suspend: - description: Suspend tells the controller to suspend the reconciliation - of this HelmRepository. - type: boolean - timeout: - default: 60s - description: Timeout is used for the index fetch operation for an - HTTPS helm repository, and for remote OCI Repository operations - like pulling for an OCI helm repository. Its default value is 60s. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m))+$ - type: string - type: - description: Type of the HelmRepository. When this field is set to "oci", - the URL field value must be prefixed with "oci://". - enum: - - default - - oci - type: string - url: - description: URL of the Helm repository, a valid URL contains at least - a protocol and host. - type: string - required: - - interval - - url - type: object - status: - default: - observedGeneration: -1 - description: HelmRepositoryStatus records the observed state of the HelmRepository. - properties: - artifact: - description: Artifact represents the last successful HelmRepository - reconciliation. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI annotations. - type: object - path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmRepository. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation of - the HelmRepository object. - format: int64 - type: integer - url: - description: URL is the dynamic fetch link for the latest Artifact. - It is provided on a "best effort" basis, and using the precise HelmRepositoryStatus.Artifact - data is recommended. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: ocirepositories.source.toolkit.fluxcd.io -spec: - group: source.toolkit.fluxcd.io - names: - kind: OCIRepository - listKind: OCIRepositoryList - plural: ocirepositories - shortNames: - - ocirepo - singular: ocirepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta2 - schema: - openAPIV3Schema: - description: OCIRepository is the Schema for the ocirepositories API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: OCIRepositorySpec defines the desired state of OCIRepository - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret containing - either or both of \n - a PEM-encoded client certificate (`certFile`) - and private key (`keyFile`); - a PEM-encoded CA certificate (`caFile`) - \n and whichever are supplied, will be used for connecting to the - registry. The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are using a self-signed - server certificate." - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - ignore: - description: Ignore overrides the set of excluded patterns in the - .sourceignore format (which is the same as .gitignore). If not provided, - a default will be used, consult the documentation for your version - to find out what those are. - type: string - insecure: - description: Insecure allows connecting to a non-TLS HTTP container - registry. - type: boolean - interval: - description: The interval at which to check for image updates. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$ - type: string - layerSelector: - description: LayerSelector specifies which layer should be extracted - from the OCI artifact. When not specified, the first layer found - in the artifact is selected. - properties: - mediaType: - description: MediaType specifies the OCI media type of the layer - which should be extracted from the OCI Artifact. The first layer - matching this type is selected. - type: string - operation: - description: Operation specifies how the selected layer should - be processed. By default, the layer compressed content is extracted - to storage. When the operation is set to 'copy', the layer compressed - content is persisted to storage as it is. - enum: - - extract - - copy - type: string - type: object - provider: - default: generic - description: The provider used for authentication, can be 'aws', 'azure', - 'gcp' or 'generic'. When not specified, defaults to 'generic'. - enum: - - generic - - aws - - azure - - gcp - type: string - ref: - description: The OCI reference to pull and monitor for changes, defaults - to the latest tag. - properties: - digest: - description: Digest is the image digest to pull, takes precedence - over SemVer. The value should be in the format 'sha256:'. - type: string - semver: - description: SemVer is the range of tags to pull selecting the - latest within the range, takes precedence over Tag. - type: string - tag: - description: Tag is the image tag to pull, defaults to latest. - type: string - type: object - secretRef: - description: SecretRef contains the secret name containing the registry - login credentials to resolve image metadata. The secret must be - of type kubernetes.io/dockerconfigjson. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - serviceAccountName: - description: 'ServiceAccountName is the name of the Kubernetes ServiceAccount - used to authenticate the image pull if the service account has attached - pull secrets. For more information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account' - type: string - suspend: - description: This flag tells the controller to suspend the reconciliation - of this source. - type: boolean - timeout: - default: 60s - description: The timeout for remote OCI Repository operations like - pulling, defaults to 60s. - pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m))+$ - type: string - url: - description: URL is a reference to an OCI artifact repository hosted - on a remote container registry. - pattern: ^oci://.*$ - type: string - verify: - description: Verify contains the secret name containing the trusted - public keys used to verify the signature and specifies which provider - to use to check whether OCI image is authentic. - properties: - provider: - default: cosign - description: Provider specifies the technology used to sign the - OCI Artifact. - enum: - - cosign - type: string - secretRef: - description: SecretRef specifies the Kubernetes Secret containing - the trusted public keys. - properties: - name: - description: Name of the referent. - type: string - required: - - name - type: object - required: - - provider - type: object - required: - - interval - - url - type: object - status: - default: - observedGeneration: -1 - description: OCIRepositoryStatus defines the observed state of OCIRepository - properties: - artifact: - description: Artifact represents the output of the last successful - OCI Repository sync. - properties: - checksum: - description: Checksum is the SHA256 checksum of the Artifact file. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to - the last update of the Artifact. - format: date-time - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds upstream information such as OCI annotations. - type: object - path: - description: Path is the relative file path of the Artifact. It - can be used to locate the file in the root of the Artifact storage - on the local file system of the controller managing the Source. - type: string - revision: - description: Revision is a human-readable identifier traceable - in the origin source system. It can be a Git commit SHA, Git - tag, a Helm chart version, etc. - type: string - size: - description: Size is the number of bytes in the file. - format: int64 - type: integer - url: - description: URL is the HTTP address of the Artifact as exposed - by the controller managing the Source. It can be used to retrieve - the Artifact for consumption, e.g. by another controller applying - the Artifact contents. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the OCIRepository. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - contentConfigChecksum: - description: "ContentConfigChecksum is a checksum of all the configurations - related to the content of the source artifact: - .spec.ignore - - .spec.layerSelector observed in .status.observedGeneration version - of the object. This can be used to determine if the content configuration - has changed and the artifact needs to be rebuilt. It has the format - of `:`, for example: `sha256:`. \n Deprecated: - Replaced with explicit fields for observed artifact content config - in the status." - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent - reconcile request value, so a change of the annotation value can - be detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - observedIgnore: - description: ObservedIgnore is the observed exclusion patterns used - for constructing the source artifact. - type: string - observedLayerSelector: - description: ObservedLayerSelector is the observed layer selector - used for constructing the source artifact. - properties: - mediaType: - description: MediaType specifies the OCI media type of the layer - which should be extracted from the OCI Artifact. The first layer - matching this type is selected. - type: string - operation: - description: Operation specifies how the selected layer should - be processed. By default, the layer compressed content is extracted - to storage. When the operation is set to 'copy', the layer compressed - content is persisted to storage as it is. - enum: - - extract - - copy - type: string - type: object - url: - description: URL is the download link for the artifact output of the - last OCI Repository sync. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: source-controller - namespace: flux-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: crd-controller-flux-system -rules: -- apiGroups: - - source.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - kustomize.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - helm.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - notification.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - image.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - secrets - - configmaps - - serviceaccounts - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - configmaps/status - verbs: - - get - - update - - patch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: cluster-reconciler-flux-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: -- kind: ServiceAccount - name: kustomize-controller - namespace: flux-system -- kind: ServiceAccount - name: helm-controller - namespace: flux-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - name: crd-controller-flux-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: crd-controller-flux-system -subjects: -- kind: ServiceAccount - name: kustomize-controller - namespace: flux-system -- kind: ServiceAccount - name: helm-controller - namespace: flux-system -- kind: ServiceAccount - name: source-controller - namespace: flux-system -- kind: ServiceAccount - name: notification-controller - namespace: flux-system -- kind: ServiceAccount - name: image-reflector-controller - namespace: flux-system -- kind: ServiceAccount - name: image-automation-controller - namespace: flux-system ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - control-plane: controller - name: source-controller - namespace: flux-system -spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: - app: source-controller - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/component: source-controller - app.kubernetes.io/instance: flux-system - app.kubernetes.io/part-of: flux - app.kubernetes.io/version: v0.38.2 - control-plane: controller - name: source-controller - namespace: flux-system -spec: - replicas: 1 - selector: - matchLabels: - app: source-controller - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: source-controller - spec: - containers: - - args: - - --events-addr= - - --watch-all-namespaces=true - - --log-level=info - - --log-encoding=json - - --enable-leader-election - - --storage-path=/data - - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local. - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: TUF_ROOT - value: /tmp/.sigstore - image: ghcr.io/fluxcd/source-controller:v0.33.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 9090 - name: http - protocol: TCP - - containerPort: 8080 - name: http-prom - protocol: TCP - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: / - port: http - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 50m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - readOnlyRootFilesystem: true - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - volumeMounts: - - mountPath: /data - name: data - - mountPath: /tmp - name: tmp - nodeSelector: - kubernetes.io/os: linux - securityContext: - fsGroup: 1337 - serviceAccountName: source-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: data - - emptyDir: {} - name: tmp diff --git a/device-operator/.dockerignore b/device-operator/.dockerignore deleted file mode 100644 index 0f04682..0000000 --- a/device-operator/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file -# Ignore build and test binaries. -bin/ -testbin/ diff --git a/device-operator/.gitignore b/device-operator/.gitignore deleted file mode 100644 index c0a7a54..0000000 --- a/device-operator/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ - -# Binaries for programs and plugins -*.exe -*.exe~ -*.dll -*.so -*.dylib -bin -testbin/* - -# Test binary, build with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - -# Kubernetes Generated files - skip generated files, except for vendored files - -!vendor/**/zz_generated.* - -# editor and IDE paraphernalia -.idea -*.swp -*.swo -*~ diff --git a/device-operator/Dockerfile b/device-operator/Dockerfile deleted file mode 100644 index 5a355c2..0000000 --- a/device-operator/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -# Build the manager binary -FROM golang:1.18 as builder - -WORKDIR /workspace -# Copy the Go Modules manifests -COPY go.mod go.mod -COPY go.sum go.sum -# cache deps before building and copying source so that we don't need to re-download as much -# and so that source changes don't invalidate our downloaded layer -RUN go mod download - -# Copy the go source -COPY main.go main.go -COPY api/ api/ -COPY controllers/ controllers/ - -# Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go - -# Use distroless as minimal base image to package the manager binary -# Refer to https://github.com/GoogleContainerTools/distroless for more details -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY --from=builder /workspace/manager . -USER 65532:65532 - -ENTRYPOINT ["/manager"] diff --git a/device-operator/Makefile b/device-operator/Makefile deleted file mode 100644 index 781b4fe..0000000 --- a/device-operator/Makefile +++ /dev/null @@ -1,140 +0,0 @@ - -# Image URL to use all building/pushing image targets -IMG ?= device-operator:latest -KUSTOMIZE_ROOT ?= overlays/example - -# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.24.2 -ACK_GINKGO_DEPRECATIONS=1.16.5 - -# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) -ifeq (,$(shell go env GOBIN)) -GOBIN=$(shell go env GOPATH)/bin -else -GOBIN=$(shell go env GOBIN) -endif - -# Setting SHELL to bash allows bash commands to be executed by recipes. -# Options are set to exit when a recipe line exits non-zero or a piped command fails. -SHELL = /usr/bin/env bash -o pipefail -.SHELLFLAGS = -ec - -.PHONY: all -all: build - -##@ General - -# The help target prints out all targets with their descriptions organized -# beneath their categories. The categories are represented by '##@' and the -# target descriptions by '##'. The awk commands is responsible for reading the -# entire set of makefiles included in this invocation, looking for lines of the -# file as xyz: ## something, and then pretty-format the target and help. Then, -# if there's a line with ##@ something, that gets pretty-printed as a category. -# More info on the usage of ANSI control characters for terminal formatting: -# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters -# More info on the awk command: -# http://linuxcommand.org/lc3_adv_awk.php - -.PHONY: help -help: ## Display this help. - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) - -##@ Development - -.PHONY: manifests -manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. - $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases - -.PHONY: generate -generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. - $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..." - -.PHONY: fmt -fmt: ## Run go fmt against code. - go fmt ./... - -.PHONY: vet -vet: ## Run go vet against code. - go vet ./... - -.PHONY: test -test: manifests generate fmt vet envtest ## Run tests. - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out - -##@ Build - -.PHONY: build -build: generate fmt vet ## Build manager binary. - go build -o bin/manager main.go - -.PHONY: run -run: manifests generate fmt vet ## Run a controller from your host. - go run ./main.go - -.PHONY: docker-build -docker-build: test ## Build docker image with the manager. - docker build -f ../build/Dockerfile.device-operator -t ${IMG} .. - -.PHONY: docker-push -docker-push: ## Push docker image with the manager. - docker push ${IMG} - -##@ Deployment - -ifndef ignore-not-found - ignore-not-found = false -endif - -.PHONY: install -install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/crd | kubectl apply -f - - -.PHONY: uninstall -uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f - - -.PHONY: deploy-preview -deploy-preview: manifests kustomize - cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} - $(KUSTOMIZE) build config/${KUSTOMIZE_ROOT} - -.PHONY: deploy -deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config. - cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} - $(KUSTOMIZE) build config/${KUSTOMIZE_ROOT} | kubectl apply -f - - -.PHONY: undeploy -undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/${KUSTOMIZE_ROOT} | kubectl delete --ignore-not-found=$(ignore-not-found) -f - - -##@ Build Dependencies - -## Location to install dependencies to -LOCALBIN ?= $(shell pwd)/bin -$(LOCALBIN): - mkdir -p $(LOCALBIN) - -## Tool Binaries -KUSTOMIZE ?= $(LOCALBIN)/kustomize -CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen -ENVTEST ?= $(LOCALBIN)/setup-envtest - -## Tool Versions -KUSTOMIZE_VERSION ?= v4.5.7 -CONTROLLER_TOOLS_VERSION ?= v0.9.2 - -KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/kustomize/$(KUSTOMIZE_VERSION)/hack/install_kustomize.sh" -.PHONY: kustomize -kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. -$(KUSTOMIZE): $(LOCALBIN) - test -s $(LOCALBIN)/kustomize || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } - -.PHONY: controller-gen -controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. -$(CONTROLLER_GEN): $(LOCALBIN) - test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) - -.PHONY: envtest -envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. -$(ENVTEST): $(LOCALBIN) - test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest diff --git a/device-operator/PROJECT b/device-operator/PROJECT deleted file mode 100644 index 8196f0e..0000000 --- a/device-operator/PROJECT +++ /dev/null @@ -1,16 +0,0 @@ -domain: hrk091.dev -layout: -- go.kubebuilder.io/v3 -projectName: device-operator -repo: github.com/nttcom/kuesta/device-operator -resources: -- api: - crdVersion: v1 - namespaced: true - controller: true - domain: hrk091.dev - group: kuesta - kind: OcDemo - path: github.com/nttcom/kuesta/device-operator/api/v1alpha1 - version: v1alpha1 -version: "3" diff --git a/device-operator/README.md b/device-operator/README.md deleted file mode 100644 index d46234a..0000000 --- a/device-operator/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# device-operator -// TODO(user): Add simple overview of use/purpose - -## Description -// TODO(user): An in-depth paragraph about your project and overview of use - -## Getting Started -You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. -**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). - -### Running on the cluster -1. Install Instances of Custom Resources: - -```sh -kubectl apply -f config/samples/ -``` - -2. Build and push your image to the location specified by `IMG`: - -```sh -make docker-build docker-push IMG=/device-operator:tag -``` - -3. Deploy the controller to the cluster with the image specified by `IMG`: - -```sh -make deploy IMG=/device-operator:tag -``` - -### Uninstall CRDs -To delete the CRDs from the cluster: - -```sh -make uninstall -``` - -### Undeploy controller -UnDeploy the controller to the cluster: - -```sh -make undeploy -``` - -## Contributing -// TODO(user): Add detailed information on how you would like others to contribute to this project - -### How it works -This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) - -It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) -which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster - -### Test It Out -1. Install the CRDs into the cluster: - -```sh -make install -``` - -2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): - -```sh -make run -``` - -**NOTE:** You can also run this in one step by running: `make install run` - -### Modifying the API definitions -If you are editing the API definitions, generate the manifests such as CRs or CRDs using: - -```sh -make manifests -``` - -**NOTE:** Run `make --help` for more information on all potential `make` targets - -More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) - -## License - -Copyright 2022 Hiroki Okui. - -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. - diff --git a/device-operator/api/v1alpha1/groupversion_info.go b/device-operator/api/v1alpha1/groupversion_info.go deleted file mode 100644 index ede9086..0000000 --- a/device-operator/api/v1alpha1/groupversion_info.go +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -// Package v1alpha1 contains API Schema definitions for the kuesta v1alpha1 API group -// +kubebuilder:object:generate=true -// +groupName=kuesta.hrk091.dev -package v1alpha1 - -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" -) - -var ( - // GroupVersion is group version used to register these objects. - GroupVersion = schema.GroupVersion{Group: "kuesta.hrk091.dev", Version: "v1alpha1"} - - // SchemeBuilder is used to add go types to the GroupVersionKind scheme. - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} - - // AddToScheme adds the types in this group-version to the given scheme. - AddToScheme = SchemeBuilder.AddToScheme -) diff --git a/device-operator/api/v1alpha1/ocdemo_types.go b/device-operator/api/v1alpha1/ocdemo_types.go deleted file mode 100644 index d1278e1..0000000 --- a/device-operator/api/v1alpha1/ocdemo_types.go +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package v1alpha1 - -import ( - device "github.com/nttcom/kuesta/pkg/device" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status - -// OcDemo is the Schema for the ocdemoes API. -type OcDemo struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - device.Device `json:",inline"` -} - -//+kubebuilder:object:root=true - -// OcDemoList contains a list of OcDemo. -type OcDemoList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []OcDemo `json:"items"` -} - -func init() { - SchemeBuilder.Register(&OcDemo{}, &OcDemoList{}) -} - -func NewDevice() *OcDemo { - return &OcDemo{} -} - -func NewDeviceList() *OcDemoList { - return &OcDemoList{} -} diff --git a/device-operator/api/v1alpha1/zz_generated.deepcopy.go b/device-operator/api/v1alpha1/zz_generated.deepcopy.go deleted file mode 100644 index 60819a9..0000000 --- a/device-operator/api/v1alpha1/zz_generated.deepcopy.go +++ /dev/null @@ -1,84 +0,0 @@ -//go:build !ignore_autogenerated -// +build !ignore_autogenerated - -/* -Copyright 2022 Hiroki Okui. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by controller-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OcDemo) DeepCopyInto(out *OcDemo) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Device.DeepCopyInto(&out.Device) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OcDemo. -func (in *OcDemo) DeepCopy() *OcDemo { - if in == nil { - return nil - } - out := new(OcDemo) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *OcDemo) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OcDemoList) DeepCopyInto(out *OcDemoList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]OcDemo, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OcDemoList. -func (in *OcDemoList) DeepCopy() *OcDemoList { - if in == nil { - return nil - } - out := new(OcDemoList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *OcDemoList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} diff --git a/device-operator/config/.gitignore b/device-operator/config/.gitignore deleted file mode 100644 index 84301da..0000000 --- a/device-operator/config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -overlays \ No newline at end of file diff --git a/device-operator/config/crd/bases/kuesta.hrk091.dev_ocdemoes.yaml b/device-operator/config/crd/bases/kuesta.hrk091.dev_ocdemoes.yaml deleted file mode 100644 index b520ae7..0000000 --- a/device-operator/config/crd/bases/kuesta.hrk091.dev_ocdemoes.yaml +++ /dev/null @@ -1,106 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.9.2 - creationTimestamp: null - name: ocdemoes.kuesta.hrk091.dev -spec: - group: kuesta.hrk091.dev - names: - kind: OcDemo - listKind: OcDemoList - plural: ocdemoes - singular: ocdemo - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: OcDemo is the Schema for the ocdemoes API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: DeviceSpec defines the basic specs required to manage target - device. - properties: - address: - type: string - baseRevision: - description: BaseRevision is the git revision to assume that the device - config of the specified version has been already provisioned. - type: string - password: - type: string - port: - type: integer - pushOnly: - description: DiffOnly is the option flag to restrict pushing all configs - without purging deleted fields in the case that lastApplied config - is not set. If true, provision will be stopped when lastApplied - config is not set. - type: boolean - rolloutRef: - description: RolloutRef is the name of DeviceRollout to which this - device belongs. - type: string - secretName: - description: SecretName is the name of secret which has 'username' - and 'password' keys. These written in this secret precedence over - Username and Password. - type: string - tls: - description: TLSSpec defines TLS parameters to access the associated - network device. - properties: - notls: - type: boolean - secretName: - description: Path to the cert file - type: string - serverName: - description: To verify the server hostname - type: string - skipVerify: - description: Skip verifying server cert - type: boolean - type: object - username: - type: string - required: - - rolloutRef - type: object - status: - description: DeviceStatus defines the observed state of OcDemo. - properties: - baseRevision: - description: BaseRevision is the git revision to assume that the device - config of the specified version has been already provisioned. - type: string - checksum: - description: Checksum is a hash to uniquely identify the entire device - config. - type: string - lastApplied: - description: LastApplied is the device config applied at the previous - transaction. - format: byte - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} diff --git a/device-operator/config/crd/kustomization.yaml b/device-operator/config/crd/kustomization.yaml deleted file mode 100644 index e48e99e..0000000 --- a/device-operator/config/crd/kustomization.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# This kustomization.yaml is not intended to be run by itself, -# since it depends on service name and namespace that are out of this kustomize package. -# It should be run by config/default -resources: -- bases/kuesta.hrk091.dev_ocdemoes.yaml -#+kubebuilder:scaffold:crdkustomizeresource - -patchesStrategicMerge: -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. -# patches here are for enabling the conversion webhook for each CRD -#- patches/webhook_in_ocdemoes.yaml -#+kubebuilder:scaffold:crdkustomizewebhookpatch - -# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. -# patches here are for enabling the CA injection for each CRD -#- patches/cainjection_in_ocdemoes.yaml -#+kubebuilder:scaffold:crdkustomizecainjectionpatch - -# the following config is for teaching kustomize how to do kustomization for CRDs. -configurations: -- kustomizeconfig.yaml diff --git a/device-operator/config/crd/kustomizeconfig.yaml b/device-operator/config/crd/kustomizeconfig.yaml deleted file mode 100644 index ec5c150..0000000 --- a/device-operator/config/crd/kustomizeconfig.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# This file is for teaching kustomize how to substitute name and namespace reference in CRD -nameReference: -- kind: Service - version: v1 - fieldSpecs: - - kind: CustomResourceDefinition - version: v1 - group: apiextensions.k8s.io - path: spec/conversion/webhook/clientConfig/service/name - -namespace: -- kind: CustomResourceDefinition - version: v1 - group: apiextensions.k8s.io - path: spec/conversion/webhook/clientConfig/service/namespace - create: false - -varReference: -- path: metadata/annotations diff --git a/device-operator/config/crd/patches/cainjection_in_ocdemoes.yaml b/device-operator/config/crd/patches/cainjection_in_ocdemoes.yaml deleted file mode 100644 index 7589061..0000000 --- a/device-operator/config/crd/patches/cainjection_in_ocdemoes.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# The following patch adds a directive for certmanager to inject CA into the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) - name: ocdemoes.kuesta.hrk091.dev diff --git a/device-operator/config/crd/patches/webhook_in_ocdemoes.yaml b/device-operator/config/crd/patches/webhook_in_ocdemoes.yaml deleted file mode 100644 index 227d403..0000000 --- a/device-operator/config/crd/patches/webhook_in_ocdemoes.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# The following patch enables a conversion webhook for the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: ocdemoes.kuesta.hrk091.dev -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - namespace: system - name: webhook-service - path: /convert - conversionReviewVersions: - - v1 diff --git a/device-operator/config/default/kustomization.yaml b/device-operator/config/default/kustomization.yaml deleted file mode 100644 index 4e19d78..0000000 --- a/device-operator/config/default/kustomization.yaml +++ /dev/null @@ -1,74 +0,0 @@ -# Adds namespace to all resources. -namespace: device-operator-system - -# Value of this field is prepended to the -# names of all resources, e.g. a deployment named -# "wordpress" becomes "alices-wordpress". -# Note that it should also match with the prefix (text before '-') of the namespace -# field above. -namePrefix: device-operator- - -# Labels to add to all resources and selectors. -#commonLabels: -# someName: someValue - -bases: -#- ../crd -- ../rbac -- ../manager -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in -# crd/kustomization.yaml -#- ../webhook -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. -#- ../certmanager -# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. -#- ../prometheus - -patchesStrategicMerge: -# Protect the /metrics endpoint by putting it behind auth. -# If you want your controller-manager to expose the /metrics -# endpoint w/o any authn/z, please comment the following line. -- manager_auth_proxy_patch.yaml - -# Mount the controller config file for loading manager configurations -# through a ComponentConfig type -#- manager_config_patch.yaml - -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in -# crd/kustomization.yaml -#- manager_webhook_patch.yaml - -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. -# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks. -# 'CERTMANAGER' needs to be enabled to use ca injection -#- webhookcainjection_patch.yaml - -# the following config is for teaching kustomize how to do var substitution -vars: -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. -#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR -# objref: -# kind: Certificate -# group: cert-manager.io -# version: v1 -# name: serving-cert # this name should match the one in certificate.yaml -# fieldref: -# fieldpath: metadata.namespace -#- name: CERTIFICATE_NAME -# objref: -# kind: Certificate -# group: cert-manager.io -# version: v1 -# name: serving-cert # this name should match the one in certificate.yaml -#- name: SERVICE_NAMESPACE # namespace of the service -# objref: -# kind: Service -# version: v1 -# name: webhook-service -# fieldref: -# fieldpath: metadata.namespace -#- name: SERVICE_NAME -# objref: -# kind: Service -# version: v1 -# name: webhook-service diff --git a/device-operator/config/default/manager_auth_proxy_patch.yaml b/device-operator/config/default/manager_auth_proxy_patch.yaml deleted file mode 100644 index 1d9e0d1..0000000 --- a/device-operator/config/default/manager_auth_proxy_patch.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# This patch inject a sidecar container which is a HTTP proxy for the -# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system -spec: - template: - spec: - containers: - - name: kube-rbac-proxy - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - "ALL" - image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0 - args: - - "--secure-listen-address=0.0.0.0:8443" - - "--upstream=http://127.0.0.1:8080/" - - "--logtostderr=true" - - "--v=0" - ports: - - containerPort: 8443 - protocol: TCP - name: https - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 5m - memory: 64Mi - - name: manager - args: - - "--health-probe-bind-address=:8081" - - "--metrics-bind-address=127.0.0.1:8080" - - "--leader-elect" - - "-zap-devel=false" diff --git a/device-operator/config/default/manager_config_patch.yaml b/device-operator/config/default/manager_config_patch.yaml deleted file mode 100644 index 6c40015..0000000 --- a/device-operator/config/default/manager_config_patch.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system -spec: - template: - spec: - containers: - - name: manager - args: - - "--config=controller_manager_config.yaml" - volumeMounts: - - name: manager-config - mountPath: /controller_manager_config.yaml - subPath: controller_manager_config.yaml - volumes: - - name: manager-config - configMap: - name: manager-config diff --git a/device-operator/config/manager/controller_manager_config.yaml b/device-operator/config/manager/controller_manager_config.yaml deleted file mode 100644 index 31eeb15..0000000 --- a/device-operator/config/manager/controller_manager_config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 -kind: ControllerManagerConfig -health: - healthProbeBindAddress: :8081 -metrics: - bindAddress: 127.0.0.1:8080 -webhook: - port: 9443 -leaderElection: - leaderElect: true - resourceName: 0aeb042c.hrk091.dev -# leaderElectionReleaseOnCancel defines if the leader should step down volume -# when the Manager ends. This requires the binary to immediately end when the -# Manager is stopped, otherwise, this setting is unsafe. Setting this significantly -# speeds up voluntary leader transitions as the new leader don't have to wait -# LeaseDuration time first. -# In the default scaffold provided, the program ends immediately after -# the manager stops, so would be fine to enable this option. However, -# if you are doing or is intended to do any operation such as perform cleanups -# after the manager stops then its usage might be unsafe. -# leaderElectionReleaseOnCancel: true diff --git a/device-operator/config/manager/kustomization.yaml b/device-operator/config/manager/kustomization.yaml deleted file mode 100644 index 2bcd3ee..0000000 --- a/device-operator/config/manager/kustomization.yaml +++ /dev/null @@ -1,10 +0,0 @@ -resources: -- manager.yaml - -generatorOptions: - disableNameSuffixHash: true - -configMapGenerator: -- name: manager-config - files: - - controller_manager_config.yaml diff --git a/device-operator/config/manager/manager.yaml b/device-operator/config/manager/manager.yaml deleted file mode 100644 index 0356b26..0000000 --- a/device-operator/config/manager/manager.yaml +++ /dev/null @@ -1,78 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - labels: - control-plane: controller-manager - name: system ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system - labels: - control-plane: controller-manager -spec: - selector: - matchLabels: - control-plane: controller-manager - replicas: 1 - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: - control-plane: controller-manager - spec: - securityContext: - runAsNonRoot: true - # TODO(user): For common cases that do not require escalating privileges - # it is recommended to ensure that all your Pods/Containers are restrictive. - # More info: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted - # Please uncomment the following code if your project does NOT have to work on old Kubernetes - # versions < 1.19 or on vendors versions which do NOT support this field by default (i.e. Openshift < 4.11 ). - # seccompProfile: - # type: RuntimeDefault - containers: - - command: - - /manager - args: - - --leader-elect - image: controller:latest - imagePullPolicy: IfNotPresent - name: manager - env: - - name: KUESTA_AGGREGATOR_URL - value: https://kuesta-aggregator.kuesta-system:8000 - - name: KUESTA_SUBSCRIBER_IMAGE - value: kuesta-subscriber - - name: KUESTA_SUBSCRIBER_IMAGE_VERSION - value: latest - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - "ALL" - livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - # TODO(user): Configure the resources accordingly based on the project requirements. - # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 10m - memory: 64Mi - serviceAccountName: controller-manager - terminationGracePeriodSeconds: 10 diff --git a/device-operator/config/overlays/example/kustomization.yaml b/device-operator/config/overlays/example/kustomization.yaml deleted file mode 100644 index cb03977..0000000 --- a/device-operator/config/overlays/example/kustomization.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- ../../default - -patches: -- patch.yaml - -replacements: - - source: - kind: Deployment - name: device-operator-controller-manager - fieldPath: spec.template.spec.containers.[name=manager].image - options: - delimiter: ":" - index: 1 - targets: - - fieldPaths: - - spec.template.spec.containers.[name=manager].env.[name=KUESTA_SUBSCRIBER_IMAGE_VERSION].value - select: - kind: Deployment - name: device-operator-controller-manager diff --git a/device-operator/config/overlays/example/patch.yaml b/device-operator/config/overlays/example/patch.yaml deleted file mode 100644 index 021565f..0000000 --- a/device-operator/config/overlays/example/patch.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: device-operator-controller-manager - namespace: device-operator-system -spec: - template: - spec: - containers: - - name: manager - env: - - name: KUESTA_AGGREGATOR_URL - value: https://kuesta-aggregator.kuesta-system:8000 - - name: KUESTA_SUBSCRIBER_IMAGE - value: device-subscriber diff --git a/device-operator/config/prometheus/kustomization.yaml b/device-operator/config/prometheus/kustomization.yaml deleted file mode 100644 index ed13716..0000000 --- a/device-operator/config/prometheus/kustomization.yaml +++ /dev/null @@ -1,2 +0,0 @@ -resources: -- monitor.yaml diff --git a/device-operator/config/prometheus/monitor.yaml b/device-operator/config/prometheus/monitor.yaml deleted file mode 100644 index d19136a..0000000 --- a/device-operator/config/prometheus/monitor.yaml +++ /dev/null @@ -1,20 +0,0 @@ - -# Prometheus Monitor Service (Metrics) -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: - control-plane: controller-manager - name: controller-manager-metrics-monitor - namespace: system -spec: - endpoints: - - path: /metrics - port: https - scheme: https - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - tlsConfig: - insecureSkipVerify: true - selector: - matchLabels: - control-plane: controller-manager diff --git a/device-operator/config/rbac/auth_proxy_client_clusterrole.yaml b/device-operator/config/rbac/auth_proxy_client_clusterrole.yaml deleted file mode 100644 index 51a75db..0000000 --- a/device-operator/config/rbac/auth_proxy_client_clusterrole.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: metrics-reader -rules: -- nonResourceURLs: - - "/metrics" - verbs: - - get diff --git a/device-operator/config/rbac/auth_proxy_role.yaml b/device-operator/config/rbac/auth_proxy_role.yaml deleted file mode 100644 index 80e1857..0000000 --- a/device-operator/config/rbac/auth_proxy_role.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create diff --git a/device-operator/config/rbac/auth_proxy_role_binding.yaml b/device-operator/config/rbac/auth_proxy_role_binding.yaml deleted file mode 100644 index ec7acc0..0000000 --- a/device-operator/config/rbac/auth_proxy_role_binding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: proxy-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/device-operator/config/rbac/auth_proxy_service.yaml b/device-operator/config/rbac/auth_proxy_service.yaml deleted file mode 100644 index 71f1797..0000000 --- a/device-operator/config/rbac/auth_proxy_service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - control-plane: controller-manager - name: controller-manager-metrics-service - namespace: system -spec: - ports: - - name: https - port: 8443 - protocol: TCP - targetPort: https - selector: - control-plane: controller-manager diff --git a/device-operator/config/rbac/kustomization.yaml b/device-operator/config/rbac/kustomization.yaml deleted file mode 100644 index 731832a..0000000 --- a/device-operator/config/rbac/kustomization.yaml +++ /dev/null @@ -1,18 +0,0 @@ -resources: -# All RBAC will be applied under this service account in -# the deployment namespace. You may comment out this resource -# if your manager will use a service account that exists at -# runtime. Be sure to update RoleBinding and ClusterRoleBinding -# subjects if changing service account names. -- service_account.yaml -- role.yaml -- role_binding.yaml -- leader_election_role.yaml -- leader_election_role_binding.yaml -# Comment the following 4 lines if you want to disable -# the auth proxy (https://github.com/brancz/kube-rbac-proxy) -# which protects your /metrics endpoint. -- auth_proxy_service.yaml -- auth_proxy_role.yaml -- auth_proxy_role_binding.yaml -- auth_proxy_client_clusterrole.yaml diff --git a/device-operator/config/rbac/leader_election_role.yaml b/device-operator/config/rbac/leader_election_role.yaml deleted file mode 100644 index 4190ec8..0000000 --- a/device-operator/config/rbac/leader_election_role.yaml +++ /dev/null @@ -1,37 +0,0 @@ -# permissions to do leader election. -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: leader-election-role -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch diff --git a/device-operator/config/rbac/leader_election_role_binding.yaml b/device-operator/config/rbac/leader_election_role_binding.yaml deleted file mode 100644 index 1d1321e..0000000 --- a/device-operator/config/rbac/leader_election_role_binding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: leader-election-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: leader-election-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/device-operator/config/rbac/ocdemo_editor_role.yaml b/device-operator/config/rbac/ocdemo_editor_role.yaml deleted file mode 100644 index 8d21ab9..0000000 --- a/device-operator/config/rbac/ocdemo_editor_role.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# permissions for end users to edit ocdemoes. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: ocdemo-editor-role -rules: -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes/status - verbs: - - get diff --git a/device-operator/config/rbac/ocdemo_viewer_role.yaml b/device-operator/config/rbac/ocdemo_viewer_role.yaml deleted file mode 100644 index 643fa07..0000000 --- a/device-operator/config/rbac/ocdemo_viewer_role.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# permissions for end users to view ocdemoes. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: ocdemo-viewer-role -rules: -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes - verbs: - - get - - list - - watch -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes/status - verbs: - - get diff --git a/device-operator/config/rbac/role.yaml b/device-operator/config/rbac/role.yaml deleted file mode 100644 index 4e26222..0000000 --- a/device-operator/config/rbac/role.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: manager-role -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch -- apiGroups: - - kuesta.hrk091.dev - resources: - - devicerollouts - verbs: - - get - - list - - watch -- apiGroups: - - kuesta.hrk091.dev - resources: - - devicerollouts/status - verbs: - - get - - patch - - update -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes/finalizers - verbs: - - update -- apiGroups: - - kuesta.hrk091.dev - resources: - - ocdemoes/status - verbs: - - get - - patch - - update -- apiGroups: - - source.toolkit.fluxcd.io - resources: - - gitrepositories - verbs: - - get - - list - - watch diff --git a/device-operator/config/rbac/role_binding.yaml b/device-operator/config/rbac/role_binding.yaml deleted file mode 100644 index 2070ede..0000000 --- a/device-operator/config/rbac/role_binding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: manager-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/device-operator/config/rbac/service_account.yaml b/device-operator/config/rbac/service_account.yaml deleted file mode 100644 index 7cd6025..0000000 --- a/device-operator/config/rbac/service_account.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: controller-manager - namespace: system diff --git a/device-operator/config/samples/nwctl_v1alpha1_ocdemo.yaml b/device-operator/config/samples/nwctl_v1alpha1_ocdemo.yaml deleted file mode 100644 index 7da2489..0000000 --- a/device-operator/config/samples/nwctl_v1alpha1_ocdemo.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: kuesta.hrk091.dev/v1alpha1 -kind: OcDemo -metadata: - name: ocdemo-sample -spec: - # TODO(user): Change following specs - address: test.example.com - port: 9339 - baseRevision: CHANGEME - revision synced with actual device config - rolloutRef: CHANGEME - the name of DeviceRollout resource to which this resource belongs - tls: - skipVerify: true diff --git a/device-operator/controllers/device_reconciler.go b/device-operator/controllers/device_reconciler.go deleted file mode 100644 index 88d2a2e..0000000 --- a/device-operator/controllers/device_reconciler.go +++ /dev/null @@ -1,435 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package controllers - -import ( - "context" - "fmt" - "io/ioutil" - "os" - "time" - - "cuelang.org/go/cue" - "cuelang.org/go/cue/cuecontext" - fluxcd "github.com/fluxcd/source-controller/api/v1beta2" - deviceoperator "github.com/nttcom/kuesta/device-operator/api/v1alpha1" - "github.com/nttcom/kuesta/device-operator/internal" - "github.com/nttcom/kuesta/device-operator/internal/model" - "github.com/nttcom/kuesta/pkg/artifact" - kcue "github.com/nttcom/kuesta/pkg/cue" - device "github.com/nttcom/kuesta/pkg/device" - "github.com/nttcom/kuesta/pkg/kuesta" - "github.com/nttcom/kuesta/pkg/stacktrace" - provisioner "github.com/nttcom/kuesta/provisioner/api/v1alpha1" - gclient "github.com/openconfig/gnmi/client" - gnmiclient "github.com/openconfig/gnmi/client/gnmi" - gnmiproto "github.com/openconfig/gnmi/proto/gnmi" - "github.com/openconfig/ygot/ygot" - "github.com/pkg/errors" - "google.golang.org/protobuf/encoding/prototext" - core "k8s.io/api/core/v1" - apierrors "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/types" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/reconcile" -) - -var ( - subscriberImage string - subscriberImageVersion string - aggregatorUrl string -) - -func SetupEnv() { - subscriberImage = internal.MustGetEnv("KUESTA_SUBSCRIBER_IMAGE") - subscriberImageVersion = internal.MustGetEnv("KUESTA_SUBSCRIBER_IMAGE_VERSION") - aggregatorUrl = internal.MustGetEnv("KUESTA_AGGREGATOR_URL") -} - -func (r *DeviceReconciler) DoReconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - l := log.FromContext(ctx) - l.Info("start reconciliation") - - if err := r.createSubscriberPodIfNotExist(ctx, req.NamespacedName); err != nil { - r.Error(ctx, err, "create subscriberPod") - return ctrl.Result{}, err - } - - device, err := r.getDevice(ctx, req.NamespacedName) - if err != nil { - r.Error(ctx, err, "get Device resource") - return ctrl.Result{}, client.IgnoreNotFound(err) - } - - // force set checksum and lastApplied config when baseRevision updated - if device.Spec.BaseRevision != device.Status.BaseRevision { - if err := r.forceReplaceLastApplied(ctx, req); err != nil { - r.Error(ctx, err, "force update status to the one given by baseRevision") - return ctrl.Result{}, err - } - return ctrl.Result{Requeue: true}, nil - } - if device.Status.LastApplied == nil { - if device.Spec.DiffOnly { - l.Info("reconcile stopped: lastApplied config is not set. you must initialize lastApplied config to update device config automatically") - return ctrl.Result{}, nil - } - l.Info("since lastApplied config is not set, all configs will be pushed without purging deleted fields. To stop this behaviour, set spec.DiffOnly to true.") - } - - var dr provisioner.DeviceRollout - if err := r.Get(ctx, types.NamespacedName{Namespace: device.Namespace, Name: device.Spec.RolloutRef}, &dr); err != nil { - r.Error(ctx, err, "get DeviceRollout") - return ctrl.Result{}, client.IgnoreNotFound(err) - } - if dr.Status.GetDeviceStatus(device.Name) != provisioner.DeviceStatusRunning { - l.Info("reconcile skipped: device status is not running") - return ctrl.Result{}, nil - } - - next := dr.Status.ResolveNextDeviceConfig(device.Name) - if next == nil || next.Checksum == "" { - l.Info("device data is not stored at git repository") - return ctrl.Result{}, nil - } - if next.Checksum == device.Status.Checksum { - l.Info(fmt.Sprintf("already provisioned: revision=%s", next.GitRevision)) - if err := r.updateRolloutStatus(ctx, dr, device.Name, provisioner.DeviceStatusCompleted); err != nil { - return ctrl.Result{}, err - } - return ctrl.Result{}, nil - } - l.Info(fmt.Sprintf("next: revision=%s", next.GitRevision)) - - var gr fluxcd.GitRepository - if err := r.Get(ctx, types.NamespacedName{Namespace: dr.Namespace, Name: dr.Name}, &gr); err != nil { - r.Error(ctx, err, "get GitRepository") - return ctrl.Result{}, client.IgnoreNotFound(err) - } - - dp, checksum, err := fetchArtifact(ctx, gr, device.Name, "") - if err != nil { - r.Error(ctx, err, "failed to fetch device config. re-check after 10 seconds") - return ctrl.Result{RequeueAfter: 10 * time.Second}, nil - } - defer os.RemoveAll(dp.RootDir) - if checksum != next.Checksum { - err = fmt.Errorf("checksum is different: want=%s, got=%s", next.Checksum, checksum) - r.Error(ctx, err, "check checksum") - if err := r.updateRolloutStatus(ctx, dr, device.Name, provisioner.DeviceStatusChecksumError); err != nil { - return ctrl.Result{}, err - } - return ctrl.Result{}, nil - } - - newBuf, err := dp.ReadDeviceConfigFile() - if err != nil { - r.Error(ctx, err, "read device config") - return ctrl.Result{}, err - } - sr, err := makeSetRequest(newBuf, device.Status.LastApplied) - if err != nil { - r.Error(ctx, err, "make gnmi SetRequest") - return ctrl.Result{}, err - } - l.V(1).Info("gnmi SetRequest payload", "updated", sr.GetUpdate(), "deleted", sr.GetDelete()) - - var secret core.Secret - var tlsData, credData map[string][]byte - - if device.Spec.TLS.SecretName != "" { - if err := r.Get(ctx, types.NamespacedName{Namespace: device.Namespace, Name: device.Spec.TLS.SecretName}, &secret); err != nil { - r.Error(ctx, err, "get secret for TLS", "secretName", device.Spec.TLS.SecretName) - return ctrl.Result{}, nil - } - tlsData = secret.Data - } - if device.Spec.ConnectionInfo.SecretName != "" { - if err := r.Get(ctx, types.NamespacedName{Namespace: device.Namespace, Name: device.Spec.ConnectionInfo.SecretName}, &secret); err != nil { - r.Error(ctx, err, "get secret for credential", "secretName", device.Spec.ConnectionInfo.SecretName) - return ctrl.Result{}, nil - } - credData = secret.Data - } - dest, err := device.Spec.GnmiDestination(tlsData, credData) - if err != nil { - r.Error(ctx, err, "make gnmi SetRequest") - return ctrl.Result{}, err - } - - var c gclient.Impl - for i := 0; i < 3; i++ { - if c, err = gnmiclient.New(ctx, dest); err == nil { - break - } - } - if err != nil { - r.Error(ctx, err, "failed to create gNMI client and connect for 3 times. mark as ConnectionError") - if err := r.updateRolloutStatus(ctx, dr, device.Name, provisioner.DeviceStatusConnectionError); err != nil { - return ctrl.Result{}, err - } - return ctrl.Result{}, nil - } - defer c.Close() - - resp, gnmiSetErr := c.(*gnmiclient.Client).Set(ctx, sr) - - if gnmiSetErr != nil { - r.Error(ctx, gnmiSetErr, "apply Set") - if err := r.updateRolloutStatus(ctx, dr, device.Name, provisioner.DeviceStatusFailed); err != nil { - return ctrl.Result{}, err - } - return ctrl.Result{}, nil - } - - l.V(1).Info("succeeded SetRequest", "response", prototext.Format(resp)) - oldDevice := device.DeepCopy() - device.Status.Checksum = next.Checksum - device.Status.LastApplied = newBuf - - if err := r.Status().Patch(ctx, device, client.MergeFrom(oldDevice)); err != nil { - r.Error(ctx, err, "patch Device") - return ctrl.Result{}, err - } - if err := r.updateRolloutStatus(ctx, dr, device.Name, provisioner.DeviceStatusCompleted); err != nil { - return ctrl.Result{}, err - } - - return ctrl.Result{}, nil -} - -func (r *DeviceReconciler) Error(ctx context.Context, err error, msg string, kvs ...interface{}) { - l := log.FromContext(ctx).WithCallDepth(1) - if st := stacktrace.Get(err); st != "" { - l = l.WithValues("stacktrace", st) - } - l.Error(err, msg, kvs...) - // TODO Event emission -} - -func (r *DeviceReconciler) updateRolloutStatus(ctx context.Context, dr provisioner.DeviceRollout, name string, status provisioner.DeviceStatus) error { - oldDr := dr.DeepCopy() - dr.Status.SetDeviceStatus(name, status) - if err := r.Status().Patch(ctx, &dr, client.MergeFrom(oldDr)); err != nil { - r.Error(ctx, err, "update DeviceRollout") - return errors.WithStack(err) - } - return nil -} - -func (r *DeviceReconciler) forceReplaceLastApplied(ctx context.Context, req ctrl.Request) error { - device, err := r.getDevice(ctx, req.NamespacedName) - if err != nil { - return client.IgnoreNotFound(err) - } - - var dr provisioner.DeviceRollout - if err := r.Get(ctx, types.NamespacedName{ - Namespace: device.Namespace, - Name: device.Spec.RolloutRef, - }, &dr); err != nil { - return client.IgnoreNotFound(err) - } - - var gr fluxcd.GitRepository - if err := r.Get(ctx, types.NamespacedName{ - Namespace: dr.Namespace, - Name: dr.Name, - }, &gr); err != nil { - return client.IgnoreNotFound(err) - } - - dp, checksum, err := fetchArtifact(ctx, gr, device.Name, device.Spec.BaseRevision) - if err != nil { - return fmt.Errorf("fetch device config: %w", err) - } - defer os.RemoveAll(dp.RootDir) - - buf, err := dp.ReadDeviceConfigFile() - if err != nil { - return fmt.Errorf("read device config: %w", err) - } - - old := device.DeepCopy() - device.Status.LastApplied = buf - device.Status.Checksum = checksum - device.Status.BaseRevision = device.Spec.BaseRevision - if err := r.Status().Patch(ctx, device, client.MergeFrom(old)); err != nil { - return fmt.Errorf("patch DeviceRollout: %w", client.IgnoreNotFound(err)) - } - return nil -} - -func (r *DeviceReconciler) createSubscriberPodIfNotExist(ctx context.Context, nsName types.NamespacedName) error { - d, err := r.getDevice(ctx, nsName) - if err != nil { - return client.IgnoreNotFound(err) - } - - subscriberPod := newSubscribePod(nsName, &d.Spec) - var p core.Pod - if err := r.Get(ctx, client.ObjectKeyFromObject(subscriberPod), &p); err == nil { - return nil - } else if !apierrors.IsNotFound(err) { - return fmt.Errorf("get subscriber Pod: %w", err) - } - - if err := ctrl.SetControllerReference(d, subscriberPod, r.Scheme); err != nil { - return fmt.Errorf("create subscriber Pod: %w", err) - } - if err := r.Create(ctx, subscriberPod); err != nil { - return fmt.Errorf("create subscriber subscriberPod: %w", err) - } - return nil -} - -func (r *DeviceReconciler) findObjectForDeviceRollout(deviceRollout client.Object) []reconcile.Request { - attachedDevices := deviceoperator.NewDeviceList() - listOps := &client.ListOptions{ - FieldSelector: fields.OneTermEqualSelector(device.RefField, deviceRollout.GetName()), - Namespace: deviceRollout.GetNamespace(), - } - - ctx := context.TODO() - if err := r.List(ctx, attachedDevices, listOps); err != nil { - r.Error(ctx, err, "unable to list effected devices") - return []reconcile.Request{} - } - - requests := make([]reconcile.Request, len(attachedDevices.Items)) - for i, v := range attachedDevices.Items { - requests[i] = reconcile.Request{ - NamespacedName: types.NamespacedName{ - Name: v.GetName(), - Namespace: v.GetNamespace(), - }, - } - } - return requests -} - -func fetchArtifact(ctx context.Context, gr fluxcd.GitRepository, device, revision string) (*kuesta.DevicePath, string, error) { - tmpDir, err := ioutil.TempDir("", gr.Name) - if err != nil { - return nil, "", fmt.Errorf("create temp dir: %w", err) - } - - if revision == "" { - _, err = artifact.FetchArtifact(ctx, gr, tmpDir) - } else { - _, err = artifact.FetchArtifactAt(ctx, gr, tmpDir, revision) - } - if err != nil { - os.RemoveAll(tmpDir) - return nil, "", fmt.Errorf("fetch artifact: %w", err) - } - - dp := &kuesta.DevicePath{RootDir: tmpDir, Device: device} - checksum, err := dp.CheckSum() - if err != nil { - os.RemoveAll(tmpDir) - return nil, "", err - } - - return dp, checksum, err -} - -func decodeCueBytes(cctx *cue.Context, bytes []byte) (*model.Device, error) { - val, err := kcue.NewValueFromBytes(cctx, bytes) - if err != nil { - return nil, errors.WithStack(err) - } - var o model.Device - if err := val.Decode(&o); err != nil { - return nil, errors.WithStack(err) - } - return &o, nil -} - -func makeSetRequest(newBuf, curBuf []byte) (*gnmiproto.SetRequest, error) { - cctx := cuecontext.New() - - newObj, err := decodeCueBytes(cctx, newBuf) - if err != nil { - return nil, fmt.Errorf("load new device config: %w", err) - } - curObj := &model.Device{} - if curBuf != nil { - curObj, err = decodeCueBytes(cctx, curBuf) - if err != nil { - return nil, fmt.Errorf("load current device config: %w", err) - } - } - - // TODO enhance performance - n, err := ygot.Diff(curObj, newObj, &ygot.DiffPathOpt{ - MapToSinglePath: true, - }) - if err != nil { - return nil, fmt.Errorf("get config diff: %w", err) - } - - sr := &gnmiproto.SetRequest{ - Prefix: n.Prefix, - Delete: n.Delete, - Update: n.Update, - } - return sr, nil -} - -func newSubscribePod(name types.NamespacedName, spec *device.DeviceSpec) *core.Pod { - // TODO mount tls secret and add path to PEM files to env vars - allowPrivilegeEscalation := false - - return &core.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("subscriber-%s", name.Name), - Namespace: name.Namespace, - }, - Spec: core.PodSpec{ - Containers: []core.Container{ - { - Name: "kuesta-subscriber", - Image: subscriberImage + ":" + subscriberImageVersion, - ImagePullPolicy: core.PullIfNotPresent, - Command: []string{"/bin/subscriber"}, - Env: []core.EnvVar{ - {Name: "KUESTA_DEVEL", Value: "true"}, - {Name: "KUESTA_VERBOSE", Value: "2"}, - {Name: "KUESTA_ADDR", Value: fmt.Sprintf("%s:%d", spec.Address, spec.Port)}, - {Name: "KUESTA_DEVICE", Value: name.Name}, - {Name: "KUESTA_AGGREGATOR_URL", Value: aggregatorUrl}, - {Name: "KUESTA_SKIP_VERIFY", Value: "true"}, - }, - SecurityContext: &core.SecurityContext{ - AllowPrivilegeEscalation: &allowPrivilegeEscalation, - }, - }, - }, - }, - } -} diff --git a/device-operator/controllers/fixtures/device1.deviceoperator.yaml b/device-operator/controllers/fixtures/device1.deviceoperator.yaml deleted file mode 100644 index 7e56c8c..0000000 --- a/device-operator/controllers/fixtures/device1.deviceoperator.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: kuesta.hrk091.dev/v1alpha1 -kind: OcDemo -metadata: - name: device1 - namespace: test-ns -spec: - address: localhost - port: 59339 - rolloutRef: test-configrepo - tls: - notls: true \ No newline at end of file diff --git a/device-operator/controllers/fixtures/devicerollout.yaml b/device-operator/controllers/fixtures/devicerollout.yaml deleted file mode 100644 index a9032f6..0000000 --- a/device-operator/controllers/fixtures/devicerollout.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: kuesta.hrk091.dev/v1alpha1 -kind: DeviceRollout -metadata: - name: test-configrepo - namespace: test-ns -spec: - deviceConfigMap: - device1: - checksum: e9a09c0cdc17b159e15cbe6b32339d2c3721b437342a72673d92318f2d549127 - gitRevision: main/f69fa2a35bff65066d7672568a95efc95778a083 - device2: - checksum: aead8e4b5c920ccd732720b991f7c73f9e452ef96f44d12c26c5fc58262d530b - gitRevision: main/f69fa2a35bff65066d7672568a95efc95778a083 -status: - phase: Healthy - status: Completed - deviceStatusMap: - device1: Completed - device2: Completed - desiredDeviceConfigMap: - device1: - checksum: e9a09c0cdc17b159e15cbe6b32339d2c3721b437342a72673d92318f2d549127 - gitRevision: main/f69fa2a35bff65066d7672568a95efc95778a083 - device2: - checksum: aead8e4b5c920ccd732720b991f7c73f9e452ef96f44d12c26c5fc58262d530b - gitRevision: main/f69fa2a35bff65066d7672568a95efc95778a083 - prevDeviceConfigMap: - device1: - checksum: f7ad27f861128ea7cc39808086f5bc3aac79395059f9e1292477eeb466016d0b - gitRevision: main/df3c063750fd423c72fc6eb0b69b560b362e388a - device2: - checksum: f7ad27f861128ea7cc39808086f5bc3aac79395059f9e1292477eeb466016d0b - gitRevision: main/df3c063750fd423c72fc6eb0b69b560b362e388a diff --git a/device-operator/controllers/fixtures/gitrepository.yaml b/device-operator/controllers/fixtures/gitrepository.yaml deleted file mode 100644 index 06897fb..0000000 --- a/device-operator/controllers/fixtures/gitrepository.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: source.toolkit.fluxcd.io/v1beta2 -kind: GitRepository -metadata: - name: test-configrepo - namespace: test-ns -spec: - gitImplementation: go-git - interval: 1m0s - ref: - branch: main - timeout: 60s - url: ssh://git@github.com:22/test-org/test-repo.git \ No newline at end of file diff --git a/device-operator/controllers/ocdemo_controller.go b/device-operator/controllers/ocdemo_controller.go deleted file mode 100644 index 035153c..0000000 --- a/device-operator/controllers/ocdemo_controller.go +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package controllers - -import ( - "context" - - deviceoperator "github.com/nttcom/kuesta/device-operator/api/v1alpha1" - provisioner "github.com/nttcom/kuesta/provisioner/api/v1alpha1" - "github.com/pkg/errors" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/builder" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/handler" - "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/predicate" - "sigs.k8s.io/controller-runtime/pkg/source" -) - -// OcDemoReconciler reconciles a OcDemo object. -type OcDemoReconciler struct { - client.Client - Scheme *runtime.Scheme - impl *DeviceReconciler -} - -//+kubebuilder:rbac:groups=kuesta.hrk091.dev,resources=ocdemoes,verbs=get;list;watch;create;update;patch;delete -//+kubebuilder:rbac:groups=kuesta.hrk091.dev,resources=ocdemoes/status,verbs=get;update;patch -//+kubebuilder:rbac:groups=kuesta.hrk091.dev,resources=ocdemoes/finalizers,verbs=update -//+kubebuilder:rbac:groups=kuesta.hrk091.dev,resources=devicerollouts,verbs=get;list;watch -//+kubebuilder:rbac:groups=kuesta.hrk091.dev,resources=devicerollouts/status,verbs=get;update;patch -//+kubebuilder:rbac:groups=source.toolkit.fluxcd.io,resources=gitrepositories,verbs=get;list;watch -//+kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch;create;update;patch;delete -//+kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch - -// Reconcile is part of the main kubernetes reconciliation loop which aims to -// move the current state of the cluster closer to the desired state. -func (r *OcDemoReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - _ = log.FromContext(ctx) - - return r.impl.DoReconcile(ctx, req) -} - -// SetupWithManager sets up the controller with the Manager. -func (r *OcDemoReconciler) SetupWithManager(mgr ctrl.Manager) error { - r.SetupReconciler() - return ctrl.NewControllerManagedBy(mgr). - For(&deviceoperator.OcDemo{}). - Owns(&corev1.Pod{}). - Watches( - &source.Kind{Type: &provisioner.DeviceRollout{}}, - handler.EnqueueRequestsFromMapFunc(r.impl.findObjectForDeviceRollout), - builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}), - ). - Complete(r) -} - -func (r *OcDemoReconciler) SetupReconciler() { - r.impl = &DeviceReconciler{r} -} - -// DeviceReconciler reconciles a OcDemo object. -type DeviceReconciler struct { - *OcDemoReconciler -} - -func (r *DeviceReconciler) getDevice(ctx context.Context, nsName types.NamespacedName) (*deviceoperator.OcDemo, error) { - device := deviceoperator.NewDevice() - if err := r.Get(ctx, nsName, device); err != nil { - return nil, errors.WithStack(err) - } - return device, nil -} diff --git a/device-operator/controllers/ocdemo_controller_test.go b/device-operator/controllers/ocdemo_controller_test.go deleted file mode 100644 index 27432a6..0000000 --- a/device-operator/controllers/ocdemo_controller_test.go +++ /dev/null @@ -1,420 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package controllers_test - -import ( - "context" - "fmt" - "io" - "net" - "net/http" - "net/http/httptest" - "os" - "path/filepath" - - source "github.com/fluxcd/source-controller/api/v1beta2" - deviceoperator "github.com/nttcom/kuesta/device-operator/api/v1alpha1" - "github.com/nttcom/kuesta/pkg/testing/gnmihelper" - "github.com/nttcom/kuesta/pkg/testing/testhelper" - provisioner "github.com/nttcom/kuesta/provisioner/api/v1alpha1" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - pb "github.com/openconfig/gnmi/proto/gnmi" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -var _ = Describe("DeviceOperator controller", func() { - ctx := context.Background() - - config1 := []byte(`{ - Interface: { - Ethernet1: { - Name: "Ethernet1" - Description: "foo" - } - } -}`) - config2 := []byte(`{ - Interface: { - Ethernet1: { - Name: "Ethernet1" - Description: "bar" - } - } - }`) - rev1st := "rev1" - rev2nd := "rev2" - - var testOpe deviceoperator.OcDemo - Expect(testhelper.NewTestDataFromFixture("device1.deviceoperator", &testOpe)).NotTo(HaveOccurred()) - var testDr provisioner.DeviceRollout - Expect(testhelper.NewTestDataFromFixture("devicerollout", &testDr)).NotTo(HaveOccurred()) - var testGr source.GitRepository - Expect(testhelper.NewTestDataFromFixture("gitrepository", &testGr)).NotTo(HaveOccurred()) - - BeforeEach(func() { - Expect(k8sClient.Create(ctx, testOpe.DeepCopy())).NotTo(HaveOccurred()) - Expect(k8sClient.Create(ctx, testDr.DeepCopy())).NotTo(HaveOccurred()) - Expect(k8sClient.Create(ctx, testGr.DeepCopy())).NotTo(HaveOccurred()) - }) - - AfterEach(func() { - Expect(k8sClient.DeleteAllOf(ctx, &deviceoperator.OcDemo{}, client.InNamespace(namespace))).NotTo(HaveOccurred()) - Expect(k8sClient.DeleteAllOf(ctx, &provisioner.DeviceRollout{}, client.InNamespace(namespace))).NotTo(HaveOccurred()) - Expect(k8sClient.DeleteAllOf(ctx, &source.GitRepository{}, client.InNamespace(namespace))).NotTo(HaveOccurred()) - }) - - It("should create subscriber pod", func() { - var pod corev1.Pod - Eventually(func() error { - key := types.NamespacedName{ - Name: fmt.Sprintf("subscriber-%s", testOpe.Name), - Namespace: testOpe.Namespace, - } - if err := k8sClient.Get(ctx, key, &pod); err != nil { - return err - } - return nil - }, timeout, interval).Should(Succeed()) - }) - - startRollout := func(config []byte, rev string) func() error { - return func() error { - var dr provisioner.DeviceRollout - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr); err != nil { - return err - } - dr.Status.Phase = provisioner.RolloutPhaseHealthy - dr.Status.Status = provisioner.RolloutStatusRunning - dr.Status.SetDeviceStatus(testOpe.Name, provisioner.DeviceStatusRunning) - if dr.Status.DesiredDeviceConfigMap == nil { - dr.Status.DesiredDeviceConfigMap = map[string]provisioner.DeviceConfig{} - } - dr.Status.DesiredDeviceConfigMap[testOpe.Name] = provisioner.DeviceConfig{ - Checksum: testhelper.Hash(config), - GitRevision: rev, - } - fmt.Fprintf(GinkgoWriter, "device rollout status, %+v\n", dr.Status) - if err := k8sClient.Status().Update(ctx, &dr); err != nil { - return err - } - return nil - } - } - - Context("when initializing without baseRevision", func() { - BeforeEach(func() { - checksum, buf := newGitRepoArtifact(func(dir string) { - Expect(testhelper.WriteFileWithMkdir(filepath.Join(dir, "devices", "device1", "config.cue"), config1)).NotTo(HaveOccurred()) - }) - data, _ := io.ReadAll(buf) - h := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := w.Write(data) - Expect(err).NotTo(HaveOccurred()) - })) - - gr := testGr.DeepCopy() - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKeyFromObject(&testGr), gr) - }, timeout, interval).Should(Succeed()) - gr.Status.Artifact = &source.Artifact{ - URL: h.URL, - Checksum: checksum, - Revision: rev1st, - } - Eventually(func() error { - return k8sClient.Status().Update(ctx, gr) - }, timeout, interval).Should(Succeed()) - }) - - It("should create subscriber pod", func() { - Eventually(func() error { - var pod corev1.Pod - key := types.NamespacedName{ - Name: fmt.Sprintf("subscriber-%s", testOpe.Name), - Namespace: testOpe.Namespace, - } - if err := k8sClient.Get(ctx, key, &pod); err != nil { - return err - } - return nil - }, timeout, interval).Should(Succeed()) - }) - - It("should initialize device resource with no base revision", func() { - var ope deviceoperator.OcDemo - Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&testOpe), &ope)).NotTo(HaveOccurred()) - Expect(ope.Status.BaseRevision).To(Equal("")) - Expect(ope.Status.LastApplied).To(BeNil()) - Expect(ope.Status.Checksum).To(Equal("")) - }) - - Context("when device config updated", func() { - It("should send gNMI SetRequest and change to completed when request succeeded", func() { - setCalled := false - m := &gnmihelper.GnmiMock{ - SetHandler: func(ctx context.Context, request *pb.SetRequest) (*pb.SetResponse, error) { - setCalled = true - return &pb.SetResponse{}, nil - }, - } - lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", testOpe.Spec.Address, testOpe.Spec.Port)) - Expect(err).NotTo(HaveOccurred()) - gs := gnmihelper.NewGnmiServerWithListener(m, lis) - defer gs.Stop() - - Eventually(startRollout(config1, rev1st), timeout, interval).Should(Succeed()) - - var dr provisioner.DeviceRollout - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr); err != nil { - return err - } - if dr.Status.GetDeviceStatus(testOpe.Name) == provisioner.DeviceStatusRunning { - return fmt.Errorf("status not changed yet") - } - return nil - }, timeout, interval).Should(Succeed()) - - Expect(setCalled).To(BeTrue()) - Expect(dr.Status.GetDeviceStatus(testOpe.Name)).To(Equal(provisioner.DeviceStatusCompleted)) - }) - }) - }) - - Context("when initializing with baseRevision", func() { - BeforeEach(func() { - checksum, buf := newGitRepoArtifact(func(dir string) { - Expect(testhelper.WriteFileWithMkdir(filepath.Join(dir, "devices", "device1", "config.cue"), config1)).NotTo(HaveOccurred()) - }) - data, _ := io.ReadAll(buf) - h := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := w.Write(data) - Expect(err).NotTo(HaveOccurred()) - })) - - gr := testGr.DeepCopy() - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKeyFromObject(&testGr), gr) - }, timeout, interval).Should(Succeed()) - gr.Status.Artifact = &source.Artifact{ - URL: h.URL, - Checksum: checksum, - Revision: rev1st, - } - Eventually(func() error { - return k8sClient.Status().Update(ctx, gr) - }, timeout, interval).Should(Succeed()) - - // set base revision - var ope deviceoperator.OcDemo - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testOpe), &ope); err != nil { - return err - } - ope.Spec.BaseRevision = rev1st - if err := k8sClient.Update(ctx, &ope); err != nil { - return err - } - return nil - }, timeout, interval).Should(Succeed()) - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testOpe), &ope); err != nil { - return err - } - if ope.Status.BaseRevision != rev1st { - return fmt.Errorf("revision not updated yet: rev=%s", ope.Status.BaseRevision) - } - return nil - }, timeout, interval).Should(Succeed()) - }) - - It("should create subscriber pod", func() { - Eventually(func() error { - var pod corev1.Pod - key := types.NamespacedName{ - Name: fmt.Sprintf("subscriber-%s", testOpe.Name), - Namespace: testOpe.Namespace, - } - if err := k8sClient.Get(ctx, key, &pod); err != nil { - return err - } - return nil - }, timeout, interval).Should(Succeed()) - }) - - It("should initialize device resource with the specified base revision", func() { - var ope deviceoperator.OcDemo - Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&testOpe), &ope)).NotTo(HaveOccurred()) - Expect(ope.Status.BaseRevision).To(Equal(rev1st)) - Expect(ope.Status.LastApplied).To(Equal(config1)) - Expect(ope.Status.Checksum).To(Equal(testhelper.Hash(config1))) - }) - - It("should change rollout status to Completed when checksum is the same", func() { - Eventually(startRollout(config1, rev2nd), timeout, interval).Should(Succeed()) - - var dr provisioner.DeviceRollout - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr); err != nil { - return err - } - if dr.Status.GetDeviceStatus(testOpe.Name) == provisioner.DeviceStatusRunning { - return fmt.Errorf("status not changed yet") - } - return nil - }, timeout, interval).Should(Succeed()) - - Expect(dr.Status.GetDeviceStatus(testOpe.Name)).To(Equal(provisioner.DeviceStatusCompleted)) - }) - - It("should change rollout status to ChecksumError when checksum is mismatched", func() { - checksum, buf := newGitRepoArtifact(func(dir string) { - Expect(testhelper.WriteFileWithMkdir(filepath.Join(dir, "devices", "device1", "config.cue"), []byte("mismatched"))).NotTo(HaveOccurred()) - }) - h := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := io.Copy(w, buf) - Expect(err).NotTo(HaveOccurred()) - })) - - gr := testGr.DeepCopy() - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKeyFromObject(&testGr), gr) - }, timeout, interval).Should(Succeed()) - gr.Status.Artifact = &source.Artifact{ - URL: h.URL, - Checksum: checksum, - Revision: rev2nd, - } - Eventually(func() error { - return k8sClient.Status().Update(ctx, gr) - }, timeout, interval).Should(Succeed()) - - Eventually(startRollout(config2, rev2nd), timeout, interval).Should(Succeed()) - - var dr provisioner.DeviceRollout - Eventually(func() error { - if err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr); err != nil { - return err - } - if dr.Status.GetDeviceStatus(testOpe.Name) == provisioner.DeviceStatusRunning { - return fmt.Errorf("status not changed yet") - } - return nil - }, timeout, interval).Should(Succeed()) - - Expect(dr.Status.GetDeviceStatus(testOpe.Name)).To(Equal(provisioner.DeviceStatusChecksumError)) - }) - - Context("when device config updated", func() { - BeforeEach(func() { - checksum, buf := newGitRepoArtifact(func(dir string) { - Expect(testhelper.WriteFileWithMkdir(filepath.Join(dir, "devices", "device1", "config.cue"), config2)).NotTo(HaveOccurred()) - }) - h := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := io.Copy(w, buf) - Expect(err).NotTo(HaveOccurred()) - })) - - gr := testGr.DeepCopy() - Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&testGr), gr)).NotTo(HaveOccurred()) - gr.Status.Artifact = &source.Artifact{ - URL: h.URL, - Checksum: checksum, - Revision: rev2nd, - } - Eventually(func() error { - return k8sClient.Status().Update(ctx, gr) - }, timeout, interval).Should(Succeed()) - }) - - It("should send gNMI SetRequest and change to completed when request succeeded", func() { - setCalled := false - m := &gnmihelper.GnmiMock{ - SetHandler: func(ctx context.Context, request *pb.SetRequest) (*pb.SetResponse, error) { - setCalled = true - return &pb.SetResponse{}, nil - }, - } - lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", testOpe.Spec.Address, testOpe.Spec.Port)) - Expect(err).NotTo(HaveOccurred()) - gs := gnmihelper.NewGnmiServerWithListener(m, lis) - defer gs.Stop() - - Eventually(startRollout(config2, rev2nd), timeout, interval).Should(Succeed()) - - var dr provisioner.DeviceRollout - Eventually(func() error { - Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr)).NotTo(HaveOccurred()) - if dr.Status.GetDeviceStatus(testOpe.Name) == provisioner.DeviceStatusRunning { - return fmt.Errorf("status not changed yet") - } - return nil - }, timeout, interval).Should(Succeed()) - - Expect(setCalled).To(BeTrue()) - Expect(dr.Status.GetDeviceStatus(testOpe.Name)).To(Equal(provisioner.DeviceStatusCompleted)) - }) - - It("should send gNMI SetRequest and change to failed when request failed", func() { - setCalled := false - m := &gnmihelper.GnmiMock{ - SetHandler: func(ctx context.Context, request *pb.SetRequest) (*pb.SetResponse, error) { - setCalled = true - return &pb.SetResponse{}, fmt.Errorf("failed") - }, - } - lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", testOpe.Spec.Address, testOpe.Spec.Port)) - Expect(err).NotTo(HaveOccurred()) - gs := gnmihelper.NewGnmiServerWithListener(m, lis) - defer gs.Stop() - - Eventually(startRollout(config2, rev2nd), timeout, interval).Should(Succeed()) - - var dr provisioner.DeviceRollout - Eventually(func() error { - Expect(k8sClient.Get(ctx, client.ObjectKeyFromObject(&testDr), &dr)).NotTo(HaveOccurred()) - if dr.Status.GetDeviceStatus(testOpe.Name) == provisioner.DeviceStatusRunning { - return fmt.Errorf("status not changed yet") - } - return nil - }, timeout, interval).Should(Succeed()) - - Expect(setCalled).To(BeTrue()) - Expect(dr.Status.GetDeviceStatus(testOpe.Name)).To(Equal(provisioner.DeviceStatusFailed)) - }) - }) - }) -}) - -func newGitRepoArtifact(fn func(dir string)) (string, io.Reader) { - dir, err := os.MkdirTemp("", "git-watcher-test-*") - defer os.RemoveAll(dir) - if err != nil { - panic(err) - } - fn(dir) - return testhelper.MustGenTgzArchiveDir(dir) -} diff --git a/device-operator/controllers/suite_test.go b/device-operator/controllers/suite_test.go deleted file mode 100644 index 5a27d73..0000000 --- a/device-operator/controllers/suite_test.go +++ /dev/null @@ -1,141 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package controllers_test - -import ( - "context" - "path/filepath" - "testing" - "time" - - source "github.com/fluxcd/source-controller/api/v1beta2" - deviceoperator "github.com/nttcom/kuesta/device-operator/api/v1alpha1" - "github.com/nttcom/kuesta/device-operator/controllers" - device "github.com/nttcom/kuesta/pkg/device" - provisioner "github.com/nttcom/kuesta/provisioner/api/v1alpha1" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - corev1 "k8s.io/api/core/v1" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/envtest" - "sigs.k8s.io/controller-runtime/pkg/envtest/printer" - logf "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/log/zap" - //+kubebuilder:scaffold:imports -) - -// These tests use Ginkgo (BDD-style Go testing framework). Refer to -// http://onsi.github.io/ginkgo/ to learn more about Ginkgo. - -var ( - cfg *rest.Config - k8sClient client.Client - testEnv *envtest.Environment - stopFunc func() -) - -const ( - timeout = time.Second * 5 - interval = time.Millisecond * 500 - namespace = "test-ns" -) - -func TestAPIs(t *testing.T) { - RegisterFailHandler(Fail) - - RunSpecsWithDefaultAndCustomReporters(t, - "Controller Suite", - []Reporter{printer.NewlineReporter{}}) -} - -var _ = BeforeSuite(func() { - logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) - - By("bootstrapping test environment") - testEnv = &envtest.Environment{ - CRDDirectoryPaths: []string{ - filepath.Join("..", "config", "crd", "bases"), - filepath.Join("..", "..", "provisioner", "config", "crd", "bases"), - filepath.Join("..", "..", "provisioner", "config", "fluxcd"), - }, - ErrorIfCRDPathMissing: true, - } - - var err error - // cfg is defined in this file globally. - cfg, err = testEnv.Start() - Expect(err).NotTo(HaveOccurred()) - Expect(cfg).NotTo(BeNil()) - - utilruntime.Must(deviceoperator.AddToScheme(scheme.Scheme)) - utilruntime.Must(provisioner.AddToScheme(scheme.Scheme)) - utilruntime.Must(source.AddToScheme(scheme.Scheme)) - - //+kubebuilder:scaffold:scheme - - mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme.Scheme, - }) - Expect(err).ToNot(HaveOccurred()) - - err = (&controllers.OcDemoReconciler{ - Client: mgr.GetClient(), - Scheme: mgr.GetScheme(), - }).SetupWithManager(mgr) - Expect(err).ToNot(HaveOccurred()) - - err = mgr.GetFieldIndexer().IndexField(context.Background(), &deviceoperator.OcDemo{}, device.RefField, func(rawObj client.Object) []string { - d := rawObj.(*deviceoperator.OcDemo) - if d.Spec.RolloutRef == "" { - return nil - } - return []string{d.Spec.RolloutRef} - }) - Expect(err).ToNot(HaveOccurred()) - - ctx := context.Background() - ctx, stopFunc = context.WithCancel(ctx) - go func() { - utilruntime.Must(mgr.Start(ctx)) - }() - - k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) - Expect(err).NotTo(HaveOccurred()) - Expect(k8sClient).NotTo(BeNil()) - - ns := &corev1.Namespace{} - ns.Name = namespace - err = k8sClient.Create(ctx, ns) - Expect(err).NotTo(HaveOccurred()) -}, 60) - -var _ = AfterSuite(func() { - By("tearing down the test environment") - stopFunc() - err := testEnv.Stop() - Expect(err).NotTo(HaveOccurred()) -}) diff --git a/device-operator/go.mod b/device-operator/go.mod deleted file mode 100644 index 3f9a968..0000000 --- a/device-operator/go.mod +++ /dev/null @@ -1,114 +0,0 @@ -module github.com/nttcom/kuesta/device-operator - -go 1.18 - -require ( - cuelang.org/go v0.6.0 - github.com/fluxcd/source-controller/api v0.33.0 - github.com/nttcom/kuesta v0.0.0 - github.com/nttcom/kuesta/provisioner v0.0.0 - github.com/onsi/ginkgo v1.16.5 - github.com/onsi/gomega v1.26.0 - github.com/openconfig/gnmi v0.10.0 - github.com/openconfig/goyang v1.2.0 - github.com/openconfig/ygot v0.25.6 - github.com/pkg/errors v0.9.1 - go.uber.org/zap v1.24.0 - google.golang.org/protobuf v1.28.1 - k8s.io/api v0.25.0 - k8s.io/apimachinery v0.25.4 - k8s.io/client-go v0.25.0 - sigs.k8s.io/controller-runtime v0.13.1 -) - -replace ( - github.com/nttcom/kuesta v0.0.0 => ../ - github.com/nttcom/kuesta/provisioner v0.0.0 => ../provisioner/ -) - -require ( - cloud.google.com/go v0.97.0 // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.27 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.1.1 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/cockroachdb/apd/v3 v3.2.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.8.0 // indirect - github.com/emicklei/proto v1.10.0 // indirect - github.com/evanphx/json-patch/v5 v5.6.0 // indirect - github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect - github.com/fluxcd/pkg/apis/meta v0.18.0 // indirect - github.com/fluxcd/pkg/untar v0.1.0 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-logr/zapr v1.2.3 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.5 // indirect - github.com/go-openapi/swag v0.19.14 // indirect - github.com/go-playground/locales v0.14.0 // indirect - github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-playground/validator/v10 v10.11.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect - github.com/golang/glog v1.0.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/go-cmp v0.5.9 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.2.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect - github.com/leodido/go-urn v1.2.1 // indirect - github.com/mailru/easyjson v0.7.6 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/nxadm/tail v1.4.8 // indirect - github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70 // indirect - github.com/prometheus/client_golang v1.12.2 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect - golang.org/x/sys v0.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-20220609170525-579cf78fd858 // indirect - gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect - google.golang.org/grpc v1.47.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.1 // indirect - k8s.io/apiextensions-apiserver v0.25.0 // indirect - k8s.io/component-base v0.25.0 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect - k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) diff --git a/device-operator/go.sum b/device-operator/go.sum deleted file mode 100644 index b5ea21c..0000000 --- a/device-operator/go.sum +++ /dev/null @@ -1,908 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -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.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= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -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.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/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -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= -cuelang.org/go v0.6.0 h1:dJhgKCog+FEZt7OwAYV1R+o/RZPmE8aqFoptmxSWyr8= -cuelang.org/go v0.6.0/go.mod h1:9CxOX8aawrr3BgSdqPj7V0RYoXo7XIb+yDFC6uESrOQ= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A= -github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.20 h1:gJ3E98kMpFB1MFqQCvA1yFab8vthOeD4VlFRQULxahg= -github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= -github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -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/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= -github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -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= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v3 v3.2.0 h1:79kHCn4tO0VGu3W0WujYrMjBDk8a2H4KEUYcXf7whcg= -github.com/cockroachdb/apd/v3 v3.2.0/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw= -github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q= -github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8= -github.com/fluxcd/pkg/apis/meta v0.18.0 h1:s0LeulWcQ4DxVX6805vgDTxlA6bAYk+Lq1QHSnNdqLM= -github.com/fluxcd/pkg/apis/meta v0.18.0/go.mod h1:pYvXRFi1UKNNrGR34jw3uqOnMXw9X6dTkML8j5Z7tis= -github.com/fluxcd/pkg/untar v0.1.0 h1:k97V/xV5hFrAkIkVPuv5AVhyxh1ZzzAKba/lbDfGo6o= -github.com/fluxcd/pkg/untar v0.1.0/go.mod h1:aGswNyzB1mlz/T/kpOS58mITBMxMKc9tlJBH037A2HY= -github.com/fluxcd/source-controller/api v0.33.0 h1:NZYU3+MNf9puyrTbBa7AJbBDlN7tmt0uw8lyye++5fE= -github.com/fluxcd/source-controller/api v0.33.0/go.mod h1:+DiGND4WSNdGkS7loPUroSarif6dHU4VlVgtLMRKCR8= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= -github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-quicktest/qt v1.100.0 h1:I7iSLgIwNp0E0UnSvKJzs7ig0jg/Iq83zsZjtQNW7jY= -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/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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/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= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -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-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-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/protobuf v3.11.4+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.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/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -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/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= -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= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= -github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= -github.com/openconfig/gnmi v0.0.0-20200414194230-1597cc0f2600/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= -github.com/openconfig/gnmi v0.0.0-20200508230933-d19cebf5e7be/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= -github.com/openconfig/gnmi v0.0.0-20220920173703-480bf53a74d2/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NTa5a8vj6E= -github.com/openconfig/gnmi v0.10.0 h1:kQEZ/9ek3Vp2Y5IVuV2L/ba8/77TgjdXg505QXvYmg8= -github.com/openconfig/gnmi v0.10.0/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NTa5a8vj6E= -github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= -github.com/openconfig/goyang v0.2.2/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/goyang v0.2.9/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/goyang v1.2.0 h1:mChUZvp1kCWq6Q00wVCtOToddFzEsGlMGG+V+wNXva8= -github.com/openconfig/goyang v1.2.0/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/gribi v0.1.1-0.20210423184541-ce37eb4ba92f/go.mod h1:OoH46A2kV42cIXGyviYmAlGmn6cHjGduyC2+I9d/iVs= -github.com/openconfig/gribi v0.1.1-0.20221218044856-ec9f4fc18013/go.mod h1:VFqGH2ZPFIfnKTimP4/AQB4OK0eySW5muJNFxXAwP6k= -github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70 h1:t6SvvdfWCMlw0XPlsdxO8EgO+q/fXnTevDjdYREKFwU= -github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70/go.mod h1:OmTWe7RyZj2CIzIgy4ovEBzCLBJzRvWSZmn7u02U9gU= -github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= -github.com/openconfig/ygot v0.10.4/go.mod h1:oCQNdXnv7dWc8scTDgoFkauv1wwplJn5HspHcjlxSAQ= -github.com/openconfig/ygot v0.13.2/go.mod h1:kJN0yCXIH07dOXvNBEFm3XxXdnDD5NI6K99tnD5x49c= -github.com/openconfig/ygot v0.25.6 h1:r8KgTHbWoQJsaoiB/Lec9jUQDT1P+3AHYrJdDn59x64= -github.com/openconfig/ygot v0.25.6/go.mod h1:+IVqHe5iTfGcDRi3szuq1Mgvy5q3S4x8DG69K5kw62o= -github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -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.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= -github.com/prometheus/client_golang v1.12.2/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.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.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.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -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/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= -github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 h1:sadMIsgmHpEOGbUs6VtHBXRR1OHevnj7hLx9ZcdNGW4= -github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= -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/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -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/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= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -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= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -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.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/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-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -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.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/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-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-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -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-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= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/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= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/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-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= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-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-20210423082822-04245dca01da/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-20210514084401-e8d321eab015/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-20210603125802-9665404d3644/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/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-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/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-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -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= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/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= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -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.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.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -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.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -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= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200519141106-08726f379972/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -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-20210222152913-aa3ee6e6a81c/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-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210811021853-ddbe55d93216/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd h1:e0TwkXOdbnH/1x5rc5MZ/VYyiZ4v+RdVfrGMqEwT68I= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -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/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/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= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.25.0 h1:H+Q4ma2U/ww0iGB78ijZx6DRByPz6/733jIuFpX70e0= -k8s.io/api v0.25.0/go.mod h1:ttceV1GyV1i1rnmvzT3BST08N6nGt+dudGrquzVQWPk= -k8s.io/apiextensions-apiserver v0.25.0 h1:CJ9zlyXAbq0FIW8CD7HHyozCMBpDSiH7EdrSTCZcZFY= -k8s.io/apiextensions-apiserver v0.25.0/go.mod h1:3pAjZiN4zw7R8aZC5gR0y3/vCkGlAjCazcg1me8iB/E= -k8s.io/apimachinery v0.25.4 h1:CtXsuaitMESSu339tfhVXhQrPET+EiWnIY1rcurKnAc= -k8s.io/apimachinery v0.25.4/go.mod h1:jaF9C/iPNM1FuLl7Zuy5b9v+n35HGSh6AQ4HYRkCqwo= -k8s.io/client-go v0.25.0 h1:CVWIaCETLMBNiTUta3d5nzRbXvY5Hy9Dpl+VvREpu5E= -k8s.io/client-go v0.25.0/go.mod h1:lxykvypVfKilxhTklov0wz1FoaUZ8X4EwbhS6rpRfN8= -k8s.io/component-base v0.25.0 h1:haVKlLkPCFZhkcqB6WCvpVxftrg6+FK5x1ZuaIDaQ5Y= -k8s.io/component-base v0.25.0/go.mod h1:F2Sumv9CnbBlqrpdf7rKZTmmd2meJq0HizeyY/yAFxk= -k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= -k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 h1:GfD9OzL11kvZN5iArC6oTS7RTj7oJOIfnislxYlqTj8= -k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.13.1 h1:tUsRCSJVM1QQOOeViGeX3GMT3dQF1eePPw6sEE3xSlg= -sigs.k8s.io/controller-runtime v0.13.1/go.mod h1:Zbz+el8Yg31jubvAEyglRZGdLAjplZl+PgtYNI6WNTI= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -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.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/device-operator/hack/boilerplate.go.txt b/device-operator/hack/boilerplate.go.txt deleted file mode 100644 index fb067ff..0000000 --- a/device-operator/hack/boilerplate.go.txt +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright 2022 Hiroki Okui. - -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. -*/ \ No newline at end of file diff --git a/device-operator/internal/env.go b/device-operator/internal/env.go deleted file mode 100644 index 6b34483..0000000 --- a/device-operator/internal/env.go +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package internal - -import ( - "log" - "os" -) - -func MustGetEnv(name string) string { - v := os.Getenv(name) - if v == "" { - log.Fatalf("Failed to load Env var: %s\n", name) - } - return v -} diff --git a/device-operator/internal/model/generated.go b/device-operator/internal/model/generated.go deleted file mode 100644 index e35350b..0000000 --- a/device-operator/internal/model/generated.go +++ /dev/null @@ -1,6759 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -/* -Package model is a generated package which contains definitions -of structs which represent a YANG schema. The generated schema can be -compressed by a series of transformations (compression was true -in this case). - -This package was generated by /Users/hirokiokui/work/go/pkg/mod/github.com/openconfig/ygot@v0.24.0/genutil/names.go -using the following YANG input files: - - yang/openconfig-interfaces.yang - - yang/openconfig-if-ip.yang - -Imported modules were sourced from: - - yang/... -*/ -package model - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/openconfig/goyang/pkg/yang" - "github.com/openconfig/ygot/ygot" - "github.com/openconfig/ygot/ytypes" -) - -// Binary is a type that is used for fields that have a YANG type of -// binary. It is used such that binary fields can be distinguished from -// leaf-lists of uint8s (which are mapped to []uint8, equivalent to -// []byte in reflection). -type Binary []byte - -// YANGEmpty is a type that is used for fields that have a YANG type of -// empty. It is used such that empty fields can be distinguished from boolean fields -// in the generated code. -type YANGEmpty bool - -var ( - SchemaTree map[string]*yang.Entry - ΛEnumTypes map[string][]reflect.Type -) - -func init() { - var err error - initΛEnumTypes() - if SchemaTree, err = UnzipSchema(); err != nil { - panic("schema error: " + err.Error()) - } -} - -// Schema returns the details of the generated schema. -func Schema() (*ytypes.Schema, error) { - uzp, err := UnzipSchema() - if err != nil { - return nil, fmt.Errorf("cannot unzip schema, %v", err) - } - - return &ytypes.Schema{ - Root: &Device{}, - SchemaTree: uzp, - Unmarshal: Unmarshal, - }, nil -} - -// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes, -// keyed by the name of the struct that the yang.Entry describes the schema for. -func UnzipSchema() (map[string]*yang.Entry, error) { - var schemaTree map[string]*yang.Entry - var err error - if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil { - return nil, fmt.Errorf("could not unzip the schema; %v", err) - } - return schemaTree, nil -} - -// Unmarshal unmarshals data, which must be RFC7951 JSON format, into -// destStruct, which must be non-nil and the correct GoStruct type. It returns -// an error if the destStruct is not found in the schema or the data cannot be -// unmarshaled. The supplied options (opts) are used to control the behaviour -// of the unmarshal function - for example, determining whether errors are -// thrown for unknown fields in the input JSON. -func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error { - tn := reflect.TypeOf(destStruct).Elem().Name() - schema, ok := SchemaTree[tn] - if !ok { - return fmt.Errorf("could not find schema for type %s", tn) - } - var jsonTree interface{} - if err := json.Unmarshal([]byte(data), &jsonTree); err != nil { - return err - } - return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...) -} - -// Device represents the /device YANG schema element. -type Device struct { - Interface map[string]*Interface `path:"interfaces/interface" module:"openconfig-interfaces/openconfig-interfaces"` - Vlan map[uint16]*Vlan `path:"vlans/vlan" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Device implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Device) IsYANGGoStruct() {} - -// NewInterface creates a new entry in the Interface list of the -// Device struct. The keys of the list are populated from the input -// arguments. -func (t *Device) NewInterface(Name string) (*Interface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Interface == nil { - t.Interface = make(map[string]*Interface) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Interface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Interface", key) - } - - t.Interface[key] = &Interface{ - Name: &Name, - } - - return t.Interface[key], nil -} - -// NewVlan creates a new entry in the Vlan list of the -// Device struct. The keys of the list are populated from the input -// arguments. -func (t *Device) NewVlan(VlanId uint16) (*Vlan, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Vlan == nil { - t.Vlan = make(map[uint16]*Vlan) - } - - key := VlanId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Vlan[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Vlan", key) - } - - t.Vlan[key] = &Vlan{ - VlanId: &VlanId, - } - - return t.Vlan[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Device) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Device) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Device. -func (*Device) ΛBelongingModule() string { - return "" -} - -// Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element. -type Interface struct { - AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"` - Aggregation *Interface_Aggregation `path:"aggregation" module:"openconfig-if-aggregate"` - Counters *Interface_Counters `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"` - Description *string `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"` - Enabled *bool `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"` - Ethernet *Interface_Ethernet `path:"ethernet" module:"openconfig-if-ethernet"` - HoldTime *Interface_HoldTime `path:"hold-time" module:"openconfig-interfaces"` - Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"` - LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-interfaces/openconfig-interfaces"` - Name *string `path:"config/name|name" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"` - OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"` - RoutedVlan *Interface_RoutedVlan `path:"routed-vlan" module:"openconfig-vlan"` - Subinterface map[uint32]*Interface_Subinterface `path:"subinterfaces/subinterface" module:"openconfig-interfaces/openconfig-interfaces"` - Type E_IETFInterfaces_InterfaceType `path:"config/type" module:"openconfig-interfaces/openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface) IsYANGGoStruct() {} - -// NewSubinterface creates a new entry in the Subinterface list of the -// Interface struct. The keys of the list are populated from the input -// arguments. -func (t *Interface) NewSubinterface(Index uint32) (*Interface_Subinterface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Subinterface == nil { - t.Subinterface = make(map[uint32]*Interface_Subinterface) - } - - key := Index - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Subinterface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Subinterface", key) - } - - t.Subinterface[key] = &Interface_Subinterface{ - Index: &Index, - } - - return t.Subinterface[key], nil -} - -// ΛListKeyMap returns the keys of the Interface struct, which is a YANG list entry. -func (t *Interface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface. -func (*Interface) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Aggregation represents the /openconfig-interfaces/interfaces/interface/aggregation YANG schema element. -type Interface_Aggregation struct { - LagSpeed *uint32 `path:"state/lag-speed" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - LagType E_OpenconfigIfAggregate_AggregationType `path:"config/lag-type" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - Member []string `path:"state/member" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - MinLinks *uint16 `path:"config/min-links" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - SwitchedVlan *Interface_Aggregation_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Aggregation implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Aggregation) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Aggregation"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Aggregation) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Aggregation. -func (*Interface_Aggregation) ΛBelongingModule() string { - return "openconfig-if-aggregate" -} - -// Interface_Aggregation_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan YANG schema element. -type Interface_Aggregation_SwitchedVlan struct { - AccessVlan Interface_Aggregation_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"` - InterfaceMode E_OpenconfigVlanTypes_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"` - NativeVlan Interface_Aggregation_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"` - TrunkVlans []Interface_Aggregation_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Aggregation_SwitchedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Aggregation_SwitchedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Aggregation_SwitchedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Aggregation_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Aggregation_SwitchedVlan. -func (*Interface_Aggregation_SwitchedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan within the YANG schema. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface { - Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String -// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() { -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_AccessVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan within the YANG schema. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface { - Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String -// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() { -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_NativeVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans within the YANG schema. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface { - Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String -// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() { -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element. -type Interface_Counters struct { - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *string `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Counters. -func (*Interface_Counters) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Ethernet represents the /openconfig-interfaces/interfaces/interface/ethernet YANG schema element. -type Interface_Ethernet struct { - AggregateId *string `path:"config/aggregate-id" module:"openconfig-if-ethernet/openconfig-if-aggregate"` - AutoNegotiate *bool `path:"config/auto-negotiate" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - Counters *Interface_Ethernet_Counters `path:"state/counters" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - DuplexMode E_Ethernet_DuplexMode `path:"config/duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - EffectiveSpeed *uint32 `path:"state/effective-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - EnableFlowControl *bool `path:"config/enable-flow-control" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - HwMacAddress *string `path:"state/hw-mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - MacAddress *string `path:"config/mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - NegotiatedDuplexMode E_Ethernet_NegotiatedDuplexMode `path:"state/negotiated-duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - NegotiatedPortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"state/negotiated-port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - PortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"config/port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - SwitchedVlan *Interface_Ethernet_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet. -func (*Interface_Ethernet) ΛBelongingModule() string { - return "openconfig-if-ethernet" -} - -// Interface_Ethernet_Counters represents the /openconfig-interfaces/interfaces/interface/ethernet/state/counters YANG schema element. -type Interface_Ethernet_Counters struct { - In_8021QFrames *uint64 `path:"in-8021q-frames" module:"openconfig-if-ethernet"` - InCrcErrors *uint64 `path:"in-crc-errors" module:"openconfig-if-ethernet"` - InFragmentFrames *uint64 `path:"in-fragment-frames" module:"openconfig-if-ethernet"` - InJabberFrames *uint64 `path:"in-jabber-frames" module:"openconfig-if-ethernet"` - InMacControlFrames *uint64 `path:"in-mac-control-frames" module:"openconfig-if-ethernet"` - InMacPauseFrames *uint64 `path:"in-mac-pause-frames" module:"openconfig-if-ethernet"` - InOversizeFrames *uint64 `path:"in-oversize-frames" module:"openconfig-if-ethernet"` - Out_8021QFrames *uint64 `path:"out-8021q-frames" module:"openconfig-if-ethernet"` - OutMacControlFrames *uint64 `path:"out-mac-control-frames" module:"openconfig-if-ethernet"` - OutMacPauseFrames *uint64 `path:"out-mac-pause-frames" module:"openconfig-if-ethernet"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet_Counters. -func (*Interface_Ethernet_Counters) ΛBelongingModule() string { - return "openconfig-if-ethernet" -} - -// Interface_Ethernet_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan YANG schema element. -type Interface_Ethernet_SwitchedVlan struct { - AccessVlan Interface_Ethernet_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"` - InterfaceMode E_OpenconfigVlanTypes_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"` - NativeVlan Interface_Ethernet_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"` - TrunkVlans []Interface_Ethernet_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet_SwitchedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet_SwitchedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet_SwitchedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet_SwitchedVlan. -func (*Interface_Ethernet_SwitchedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan within the YANG schema. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface { - Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String -// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() { -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_AccessVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan within the YANG schema. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface { - Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String -// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() { -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_NativeVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans within the YANG schema. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface { - Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String -// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() { -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element. -type Interface_HoldTime struct { - Down *uint32 `path:"config/down" module:"openconfig-interfaces/openconfig-interfaces"` - Up *uint32 `path:"config/up" module:"openconfig-interfaces/openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_HoldTime implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_HoldTime) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_HoldTime) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_HoldTime"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_HoldTime. -func (*Interface_HoldTime) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_RoutedVlan represents the /openconfig-interfaces/interfaces/interface/routed-vlan YANG schema element. -type Interface_RoutedVlan struct { - Ipv4 *Interface_RoutedVlan_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` - Ipv6 *Interface_RoutedVlan_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` - Vlan Interface_RoutedVlan_Vlan_Union `path:"config/vlan" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan. -func (*Interface_RoutedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_RoutedVlan_Vlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan within the YANG schema. -type Interface_RoutedVlan_Vlan_Union interface { - Is_Interface_RoutedVlan_Vlan_Union() -} - -// Interface_RoutedVlan_Vlan_Union_String is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan -// is to be set to a string value. -type Interface_RoutedVlan_Vlan_Union_String struct { - String string -} - -// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_String -// implements the Interface_RoutedVlan_Vlan_Union interface. -func (*Interface_RoutedVlan_Vlan_Union_String) Is_Interface_RoutedVlan_Vlan_Union() {} - -// Interface_RoutedVlan_Vlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan -// is to be set to a uint16 value. -type Interface_RoutedVlan_Vlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_Uint16 -// implements the Interface_RoutedVlan_Vlan_Union interface. -func (*Interface_RoutedVlan_Vlan_Union_Uint16) Is_Interface_RoutedVlan_Vlan_Union() {} - -// To_Interface_RoutedVlan_Vlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_RoutedVlan_Vlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_RoutedVlan) To_Interface_RoutedVlan_Vlan_Union(i interface{}) (Interface_RoutedVlan_Vlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_RoutedVlan_Vlan_Union_String{v}, nil - case uint16: - return &Interface_RoutedVlan_Vlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_RoutedVlan_Vlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_RoutedVlan_Ipv4 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4 YANG schema element. -type Interface_RoutedVlan_Ipv4 struct { - Address map[string]*Interface_RoutedVlan_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_RoutedVlan_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_RoutedVlan_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv4_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_RoutedVlan_Ipv4_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv4_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_RoutedVlan_Ipv4_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4. -func (*Interface_RoutedVlan_Ipv4) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address YANG schema element. -type Interface_RoutedVlan_Ipv4_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_RoutedVlan_Ipv4_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv4_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address. -func (*Interface_RoutedVlan_Ipv4_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor YANG schema element. -type Interface_RoutedVlan_Ipv4_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Neighbor struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Neighbor. -func (*Interface_RoutedVlan_Ipv4_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered YANG schema element. -type Interface_RoutedVlan_Ipv4_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Unnumbered. -func (*Interface_RoutedVlan_Ipv4_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref YANG schema element. -type Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef. -func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6 YANG schema element. -type Interface_RoutedVlan_Ipv6 struct { - Address map[string]*Interface_RoutedVlan_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_RoutedVlan_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_RoutedVlan_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv6_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_RoutedVlan_Ipv6_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv6_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_RoutedVlan_Ipv6_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6. -func (*Interface_RoutedVlan_Ipv6) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address YANG schema element. -type Interface_RoutedVlan_Ipv6_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - Status E_Address_Status `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_RoutedVlan_Ipv6_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv6_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address. -func (*Interface_RoutedVlan_Ipv6_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor YANG schema element. -type Interface_RoutedVlan_Ipv6_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Neighbor struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Neighbor. -func (*Interface_RoutedVlan_Ipv6_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered YANG schema element. -type Interface_RoutedVlan_Ipv6_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Unnumbered. -func (*Interface_RoutedVlan_Ipv6_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref YANG schema element. -type Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef. -func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element. -type Interface_Subinterface struct { - AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"` - Counters *Interface_Subinterface_Counters `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"` - Description *string `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"` - Enabled *bool `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"` - Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"` - Index *uint32 `path:"config/index|index" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"` - Ipv4 *Interface_Subinterface_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` - Ipv6 *Interface_Subinterface_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` - LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"` - Name *string `path:"config/name" module:"openconfig-interfaces/openconfig-interfaces"` - OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"` - Vlan *Interface_Subinterface_Vlan `path:"vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface struct, which is a YANG list entry. -func (t *Interface_Subinterface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Index == nil { - return nil, fmt.Errorf("nil value for key Index") - } - - return map[string]interface{}{ - "index": *t.Index, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface. -func (*Interface_Subinterface) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Subinterface_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element. -type Interface_Subinterface_Counters struct { - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *string `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Counters. -func (*Interface_Subinterface_Counters) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Subinterface_Ipv4 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4 YANG schema element. -type Interface_Subinterface_Ipv4 struct { - Address map[string]*Interface_Subinterface_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_Subinterface_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_Subinterface_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4) NewAddress(Ip string) (*Interface_Subinterface_Ipv4_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_Subinterface_Ipv4_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv4_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_Subinterface_Ipv4_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4. -func (*Interface_Subinterface_Ipv4) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address YANG schema element. -type Interface_Subinterface_Ipv4_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_Subinterface_Ipv4_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv4_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_Subinterface_Ipv4_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address. -func (*Interface_Subinterface_Ipv4_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_Subinterface_Ipv4_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address_VrrpGroup. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor YANG schema element. -type Interface_Subinterface_Ipv4_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Neighbor struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Neighbor. -func (*Interface_Subinterface_Ipv4_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered YANG schema element. -type Interface_Subinterface_Ipv4_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Unnumbered. -func (*Interface_Subinterface_Ipv4_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref YANG schema element. -type Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef. -func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6 YANG schema element. -type Interface_Subinterface_Ipv6 struct { - Address map[string]*Interface_Subinterface_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_Subinterface_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_Subinterface_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6) NewAddress(Ip string) (*Interface_Subinterface_Ipv6_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_Subinterface_Ipv6_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv6_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_Subinterface_Ipv6_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6. -func (*Interface_Subinterface_Ipv6) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address YANG schema element. -type Interface_Subinterface_Ipv6_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - Status E_Address_Status `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_Subinterface_Ipv6_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv6_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_Subinterface_Ipv6_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address. -func (*Interface_Subinterface_Ipv6_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_Subinterface_Ipv6_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address_VrrpGroup. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor YANG schema element. -type Interface_Subinterface_Ipv6_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Neighbor struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Neighbor. -func (*Interface_Subinterface_Ipv6_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered YANG schema element. -type Interface_Subinterface_Ipv6_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Unnumbered. -func (*Interface_Subinterface_Ipv6_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref YANG schema element. -type Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef. -func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Vlan represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan YANG schema element. -type Interface_Subinterface_Vlan struct { - VlanId Interface_Subinterface_Vlan_VlanId_Union `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Vlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Vlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Vlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Vlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Vlan. -func (*Interface_Subinterface_Vlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Subinterface_Vlan_VlanId_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id within the YANG schema. -type Interface_Subinterface_Vlan_VlanId_Union interface { - Is_Interface_Subinterface_Vlan_VlanId_Union() -} - -// Interface_Subinterface_Vlan_VlanId_Union_String is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id -// is to be set to a string value. -type Interface_Subinterface_Vlan_VlanId_Union_String struct { - String string -} - -// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_String -// implements the Interface_Subinterface_Vlan_VlanId_Union interface. -func (*Interface_Subinterface_Vlan_VlanId_Union_String) Is_Interface_Subinterface_Vlan_VlanId_Union() { -} - -// Interface_Subinterface_Vlan_VlanId_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id -// is to be set to a uint16 value. -type Interface_Subinterface_Vlan_VlanId_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_Uint16 -// implements the Interface_Subinterface_Vlan_VlanId_Union interface. -func (*Interface_Subinterface_Vlan_VlanId_Union_Uint16) Is_Interface_Subinterface_Vlan_VlanId_Union() { -} - -// To_Interface_Subinterface_Vlan_VlanId_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Subinterface_Vlan_VlanId_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Subinterface_Vlan) To_Interface_Subinterface_Vlan_VlanId_Union(i interface{}) (Interface_Subinterface_Vlan_VlanId_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Subinterface_Vlan_VlanId_Union_String{v}, nil - case uint16: - return &Interface_Subinterface_Vlan_VlanId_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Subinterface_Vlan_VlanId_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Vlan represents the /openconfig-vlan/vlans/vlan YANG schema element. -type Vlan struct { - Member []*Vlan_Member `path:"members/member" module:"openconfig-vlan/openconfig-vlan"` - Name *string `path:"config/name" module:"openconfig-vlan/openconfig-vlan"` - Status E_Vlan_Status `path:"config/status" module:"openconfig-vlan/openconfig-vlan"` - Tpid E_OpenconfigVlanTypes_TPID_TYPES `path:"config/tpid" module:"openconfig-vlan/openconfig-vlan"` - VlanId *uint16 `path:"config/vlan-id|vlan-id" module:"openconfig-vlan/openconfig-vlan|openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Vlan struct, which is a YANG list entry. -func (t *Vlan) ΛListKeyMap() (map[string]interface{}, error) { - if t.VlanId == nil { - return nil, fmt.Errorf("nil value for key VlanId") - } - - return map[string]interface{}{ - "vlan-id": *t.VlanId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan. -func (*Vlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Vlan_Member represents the /openconfig-vlan/vlans/vlan/members/member YANG schema element. -type Vlan_Member struct { - InterfaceRef *Vlan_Member_InterfaceRef `path:"interface-ref" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan_Member implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan_Member) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan_Member"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan_Member) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan_Member. -func (*Vlan_Member) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Vlan_Member_InterfaceRef represents the /openconfig-vlan/vlans/vlan/members/member/interface-ref YANG schema element. -type Vlan_Member_InterfaceRef struct { - Interface *string `path:"state/interface" module:"openconfig-vlan/openconfig-vlan"` - Subinterface *uint32 `path:"state/subinterface" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan_Member_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan_Member_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan_Member_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan_Member_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan_Member_InterfaceRef. -func (*Vlan_Member_InterfaceRef) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// E_Address_Status is a derived int64 type which is used to represent -// the enumerated node Address_Status. An additional value named -// Address_Status_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Address_Status int64 - -// IsYANGGoEnum ensures that Address_Status implements the yang.GoEnum -// interface. This ensures that Address_Status can be identified as a -// mapped type for a YANG enumeration. -func (E_Address_Status) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Address_Status. -func (E_Address_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Address_Status. -func (e E_Address_Status) String() string { - return ygot.EnumLogString(e, int64(e), "E_Address_Status") -} - -const ( - // Address_Status_UNSET corresponds to the value UNSET of Address_Status - Address_Status_UNSET E_Address_Status = 0 - // Address_Status_PREFERRED corresponds to the value PREFERRED of Address_Status - Address_Status_PREFERRED E_Address_Status = 1 - // Address_Status_DEPRECATED corresponds to the value DEPRECATED of Address_Status - Address_Status_DEPRECATED E_Address_Status = 2 - // Address_Status_INVALID corresponds to the value INVALID of Address_Status - Address_Status_INVALID E_Address_Status = 3 - // Address_Status_INACCESSIBLE corresponds to the value INACCESSIBLE of Address_Status - Address_Status_INACCESSIBLE E_Address_Status = 4 - // Address_Status_UNKNOWN corresponds to the value UNKNOWN of Address_Status - Address_Status_UNKNOWN E_Address_Status = 5 - // Address_Status_TENTATIVE corresponds to the value TENTATIVE of Address_Status - Address_Status_TENTATIVE E_Address_Status = 6 - // Address_Status_DUPLICATE corresponds to the value DUPLICATE of Address_Status - Address_Status_DUPLICATE E_Address_Status = 7 - // Address_Status_OPTIMISTIC corresponds to the value OPTIMISTIC of Address_Status - Address_Status_OPTIMISTIC E_Address_Status = 8 -) - -// E_Ethernet_DuplexMode is a derived int64 type which is used to represent -// the enumerated node Ethernet_DuplexMode. An additional value named -// Ethernet_DuplexMode_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Ethernet_DuplexMode int64 - -// IsYANGGoEnum ensures that Ethernet_DuplexMode implements the yang.GoEnum -// interface. This ensures that Ethernet_DuplexMode can be identified as a -// mapped type for a YANG enumeration. -func (E_Ethernet_DuplexMode) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Ethernet_DuplexMode. -func (E_Ethernet_DuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Ethernet_DuplexMode. -func (e E_Ethernet_DuplexMode) String() string { - return ygot.EnumLogString(e, int64(e), "E_Ethernet_DuplexMode") -} - -const ( - // Ethernet_DuplexMode_UNSET corresponds to the value UNSET of Ethernet_DuplexMode - Ethernet_DuplexMode_UNSET E_Ethernet_DuplexMode = 0 - // Ethernet_DuplexMode_FULL corresponds to the value FULL of Ethernet_DuplexMode - Ethernet_DuplexMode_FULL E_Ethernet_DuplexMode = 1 - // Ethernet_DuplexMode_HALF corresponds to the value HALF of Ethernet_DuplexMode - Ethernet_DuplexMode_HALF E_Ethernet_DuplexMode = 2 -) - -// E_Ethernet_NegotiatedDuplexMode is a derived int64 type which is used to represent -// the enumerated node Ethernet_NegotiatedDuplexMode. An additional value named -// Ethernet_NegotiatedDuplexMode_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Ethernet_NegotiatedDuplexMode int64 - -// IsYANGGoEnum ensures that Ethernet_NegotiatedDuplexMode implements the yang.GoEnum -// interface. This ensures that Ethernet_NegotiatedDuplexMode can be identified as a -// mapped type for a YANG enumeration. -func (E_Ethernet_NegotiatedDuplexMode) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Ethernet_NegotiatedDuplexMode. -func (E_Ethernet_NegotiatedDuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_Ethernet_NegotiatedDuplexMode. -func (e E_Ethernet_NegotiatedDuplexMode) String() string { - return ygot.EnumLogString(e, int64(e), "E_Ethernet_NegotiatedDuplexMode") -} - -const ( - // Ethernet_NegotiatedDuplexMode_UNSET corresponds to the value UNSET of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_UNSET E_Ethernet_NegotiatedDuplexMode = 0 - // Ethernet_NegotiatedDuplexMode_FULL corresponds to the value FULL of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_FULL E_Ethernet_NegotiatedDuplexMode = 1 - // Ethernet_NegotiatedDuplexMode_HALF corresponds to the value HALF of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_HALF E_Ethernet_NegotiatedDuplexMode = 2 -) - -// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent -// the enumerated node IETFInterfaces_InterfaceType. An additional value named -// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_IETFInterfaces_InterfaceType int64 - -// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum -// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a -// mapped type for a YANG enumeration. -func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with IETFInterfaces_InterfaceType. -func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_IETFInterfaces_InterfaceType. -func (e E_IETFInterfaces_InterfaceType) String() string { - return ygot.EnumLogString(e, int64(e), "E_IETFInterfaces_InterfaceType") -} - -const ( - // IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0 - // IETFInterfaces_InterfaceType_a12MppSwitch corresponds to the value a12MppSwitch of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_a12MppSwitch E_IETFInterfaces_InterfaceType = 1 - // IETFInterfaces_InterfaceType_aal2 corresponds to the value aal2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aal2 E_IETFInterfaces_InterfaceType = 2 - // IETFInterfaces_InterfaceType_aal5 corresponds to the value aal5 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aal5 E_IETFInterfaces_InterfaceType = 3 - // IETFInterfaces_InterfaceType_actelisMetaLOOP corresponds to the value actelisMetaLOOP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_actelisMetaLOOP E_IETFInterfaces_InterfaceType = 4 - // IETFInterfaces_InterfaceType_adsl corresponds to the value adsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl E_IETFInterfaces_InterfaceType = 5 - // IETFInterfaces_InterfaceType_adsl2 corresponds to the value adsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl2 E_IETFInterfaces_InterfaceType = 6 - // IETFInterfaces_InterfaceType_adsl2plus corresponds to the value adsl2plus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl2plus E_IETFInterfaces_InterfaceType = 7 - // IETFInterfaces_InterfaceType_aflane8023 corresponds to the value aflane8023 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aflane8023 E_IETFInterfaces_InterfaceType = 8 - // IETFInterfaces_InterfaceType_aflane8025 corresponds to the value aflane8025 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aflane8025 E_IETFInterfaces_InterfaceType = 9 - // IETFInterfaces_InterfaceType_aluELP corresponds to the value aluELP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluELP E_IETFInterfaces_InterfaceType = 10 - // IETFInterfaces_InterfaceType_aluEpon corresponds to the value aluEpon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEpon E_IETFInterfaces_InterfaceType = 11 - // IETFInterfaces_InterfaceType_aluEponLogicalLink corresponds to the value aluEponLogicalLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponLogicalLink E_IETFInterfaces_InterfaceType = 12 - // IETFInterfaces_InterfaceType_aluEponOnu corresponds to the value aluEponOnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponOnu E_IETFInterfaces_InterfaceType = 13 - // IETFInterfaces_InterfaceType_aluEponPhysicalUni corresponds to the value aluEponPhysicalUni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponPhysicalUni E_IETFInterfaces_InterfaceType = 14 - // IETFInterfaces_InterfaceType_aluGponOnu corresponds to the value aluGponOnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluGponOnu E_IETFInterfaces_InterfaceType = 15 - // IETFInterfaces_InterfaceType_aluGponPhysicalUni corresponds to the value aluGponPhysicalUni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluGponPhysicalUni E_IETFInterfaces_InterfaceType = 16 - // IETFInterfaces_InterfaceType_arap corresponds to the value arap of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arap E_IETFInterfaces_InterfaceType = 17 - // IETFInterfaces_InterfaceType_arcnet corresponds to the value arcnet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arcnet E_IETFInterfaces_InterfaceType = 18 - // IETFInterfaces_InterfaceType_arcnetPlus corresponds to the value arcnetPlus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arcnetPlus E_IETFInterfaces_InterfaceType = 19 - // IETFInterfaces_InterfaceType_async corresponds to the value async of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_async E_IETFInterfaces_InterfaceType = 20 - // IETFInterfaces_InterfaceType_atm corresponds to the value atm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atm E_IETFInterfaces_InterfaceType = 21 - // IETFInterfaces_InterfaceType_atmDxi corresponds to the value atmDxi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmDxi E_IETFInterfaces_InterfaceType = 22 - // IETFInterfaces_InterfaceType_atmFuni corresponds to the value atmFuni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmFuni E_IETFInterfaces_InterfaceType = 23 - // IETFInterfaces_InterfaceType_atmIma corresponds to the value atmIma of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmIma E_IETFInterfaces_InterfaceType = 24 - // IETFInterfaces_InterfaceType_atmLogical corresponds to the value atmLogical of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmLogical E_IETFInterfaces_InterfaceType = 25 - // IETFInterfaces_InterfaceType_atmRadio corresponds to the value atmRadio of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmRadio E_IETFInterfaces_InterfaceType = 26 - // IETFInterfaces_InterfaceType_atmSubInterface corresponds to the value atmSubInterface of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmSubInterface E_IETFInterfaces_InterfaceType = 27 - // IETFInterfaces_InterfaceType_atmVciEndPt corresponds to the value atmVciEndPt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmVciEndPt E_IETFInterfaces_InterfaceType = 28 - // IETFInterfaces_InterfaceType_atmVirtual corresponds to the value atmVirtual of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmVirtual E_IETFInterfaces_InterfaceType = 29 - // IETFInterfaces_InterfaceType_atmbond corresponds to the value atmbond of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmbond E_IETFInterfaces_InterfaceType = 30 - // IETFInterfaces_InterfaceType_aviciOpticalEther corresponds to the value aviciOpticalEther of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aviciOpticalEther E_IETFInterfaces_InterfaceType = 31 - // IETFInterfaces_InterfaceType_basicISDN corresponds to the value basicISDN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_basicISDN E_IETFInterfaces_InterfaceType = 32 - // IETFInterfaces_InterfaceType_bgppolicyaccounting corresponds to the value bgppolicyaccounting of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bgppolicyaccounting E_IETFInterfaces_InterfaceType = 33 - // IETFInterfaces_InterfaceType_bits corresponds to the value bits of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bits E_IETFInterfaces_InterfaceType = 34 - // IETFInterfaces_InterfaceType_bridge corresponds to the value bridge of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bridge E_IETFInterfaces_InterfaceType = 35 - // IETFInterfaces_InterfaceType_bsc corresponds to the value bsc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bsc E_IETFInterfaces_InterfaceType = 36 - // IETFInterfaces_InterfaceType_cableDownstreamRfPort corresponds to the value cableDownstreamRfPort of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cableDownstreamRfPort E_IETFInterfaces_InterfaceType = 37 - // IETFInterfaces_InterfaceType_capwapDot11Bss corresponds to the value capwapDot11Bss of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapDot11Bss E_IETFInterfaces_InterfaceType = 38 - // IETFInterfaces_InterfaceType_capwapDot11Profile corresponds to the value capwapDot11Profile of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapDot11Profile E_IETFInterfaces_InterfaceType = 39 - // IETFInterfaces_InterfaceType_capwapWtpVirtualRadio corresponds to the value capwapWtpVirtualRadio of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapWtpVirtualRadio E_IETFInterfaces_InterfaceType = 40 - // IETFInterfaces_InterfaceType_cblVectaStar corresponds to the value cblVectaStar of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cblVectaStar E_IETFInterfaces_InterfaceType = 41 - // IETFInterfaces_InterfaceType_cctEmul corresponds to the value cctEmul of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cctEmul E_IETFInterfaces_InterfaceType = 42 - // IETFInterfaces_InterfaceType_ces corresponds to the value ces of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ces E_IETFInterfaces_InterfaceType = 43 - // IETFInterfaces_InterfaceType_channel corresponds to the value channel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_channel E_IETFInterfaces_InterfaceType = 44 - // IETFInterfaces_InterfaceType_ciscoISLvlan corresponds to the value ciscoISLvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ciscoISLvlan E_IETFInterfaces_InterfaceType = 45 - // IETFInterfaces_InterfaceType_cnr corresponds to the value cnr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cnr E_IETFInterfaces_InterfaceType = 46 - // IETFInterfaces_InterfaceType_coffee corresponds to the value coffee of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_coffee E_IETFInterfaces_InterfaceType = 47 - // IETFInterfaces_InterfaceType_compositeLink corresponds to the value compositeLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_compositeLink E_IETFInterfaces_InterfaceType = 48 - // IETFInterfaces_InterfaceType_dcn corresponds to the value dcn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dcn E_IETFInterfaces_InterfaceType = 49 - // IETFInterfaces_InterfaceType_ddnX25 corresponds to the value ddnX25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ddnX25 E_IETFInterfaces_InterfaceType = 50 - // IETFInterfaces_InterfaceType_digitalPowerline corresponds to the value digitalPowerline of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_digitalPowerline E_IETFInterfaces_InterfaceType = 51 - // IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel corresponds to the value digitalWrapperOverheadChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel E_IETFInterfaces_InterfaceType = 52 - // IETFInterfaces_InterfaceType_dlsw corresponds to the value dlsw of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dlsw E_IETFInterfaces_InterfaceType = 53 - // IETFInterfaces_InterfaceType_docsCableDownstream corresponds to the value docsCableDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableDownstream E_IETFInterfaces_InterfaceType = 54 - // IETFInterfaces_InterfaceType_docsCableMCmtsDownstream corresponds to the value docsCableMCmtsDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableMCmtsDownstream E_IETFInterfaces_InterfaceType = 55 - // IETFInterfaces_InterfaceType_docsCableMaclayer corresponds to the value docsCableMaclayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableMaclayer E_IETFInterfaces_InterfaceType = 56 - // IETFInterfaces_InterfaceType_docsCableUpstream corresponds to the value docsCableUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstream E_IETFInterfaces_InterfaceType = 57 - // IETFInterfaces_InterfaceType_docsCableUpstreamChannel corresponds to the value docsCableUpstreamChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstreamChannel E_IETFInterfaces_InterfaceType = 58 - // IETFInterfaces_InterfaceType_docsCableUpstreamRfPort corresponds to the value docsCableUpstreamRfPort of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstreamRfPort E_IETFInterfaces_InterfaceType = 59 - // IETFInterfaces_InterfaceType_ds0 corresponds to the value ds0 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds0 E_IETFInterfaces_InterfaceType = 60 - // IETFInterfaces_InterfaceType_ds0Bundle corresponds to the value ds0Bundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds0Bundle E_IETFInterfaces_InterfaceType = 61 - // IETFInterfaces_InterfaceType_ds1 corresponds to the value ds1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds1 E_IETFInterfaces_InterfaceType = 62 - // IETFInterfaces_InterfaceType_ds1FDL corresponds to the value ds1FDL of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds1FDL E_IETFInterfaces_InterfaceType = 63 - // IETFInterfaces_InterfaceType_ds3 corresponds to the value ds3 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds3 E_IETFInterfaces_InterfaceType = 64 - // IETFInterfaces_InterfaceType_dtm corresponds to the value dtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dtm E_IETFInterfaces_InterfaceType = 65 - // IETFInterfaces_InterfaceType_dvbAsiIn corresponds to the value dvbAsiIn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbAsiIn E_IETFInterfaces_InterfaceType = 66 - // IETFInterfaces_InterfaceType_dvbAsiOut corresponds to the value dvbAsiOut of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbAsiOut E_IETFInterfaces_InterfaceType = 67 - // IETFInterfaces_InterfaceType_dvbRccDownstream corresponds to the value dvbRccDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccDownstream E_IETFInterfaces_InterfaceType = 68 - // IETFInterfaces_InterfaceType_dvbRccMacLayer corresponds to the value dvbRccMacLayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccMacLayer E_IETFInterfaces_InterfaceType = 69 - // IETFInterfaces_InterfaceType_dvbRccUpstream corresponds to the value dvbRccUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccUpstream E_IETFInterfaces_InterfaceType = 70 - // IETFInterfaces_InterfaceType_dvbRcsMacLayer corresponds to the value dvbRcsMacLayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRcsMacLayer E_IETFInterfaces_InterfaceType = 71 - // IETFInterfaces_InterfaceType_dvbRcsTdma corresponds to the value dvbRcsTdma of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRcsTdma E_IETFInterfaces_InterfaceType = 72 - // IETFInterfaces_InterfaceType_dvbTdm corresponds to the value dvbTdm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbTdm E_IETFInterfaces_InterfaceType = 73 - // IETFInterfaces_InterfaceType_e1 corresponds to the value e1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_e1 E_IETFInterfaces_InterfaceType = 74 - // IETFInterfaces_InterfaceType_econet corresponds to the value econet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_econet E_IETFInterfaces_InterfaceType = 75 - // IETFInterfaces_InterfaceType_eon corresponds to the value eon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_eon E_IETFInterfaces_InterfaceType = 76 - // IETFInterfaces_InterfaceType_eplrs corresponds to the value eplrs of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_eplrs E_IETFInterfaces_InterfaceType = 77 - // IETFInterfaces_InterfaceType_escon corresponds to the value escon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_escon E_IETFInterfaces_InterfaceType = 78 - // IETFInterfaces_InterfaceType_ethernet3Mbit corresponds to the value ethernet3Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ethernet3Mbit E_IETFInterfaces_InterfaceType = 79 - // IETFInterfaces_InterfaceType_ethernetCsmacd corresponds to the value ethernetCsmacd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ethernetCsmacd E_IETFInterfaces_InterfaceType = 80 - // IETFInterfaces_InterfaceType_fast corresponds to the value fast of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fast E_IETFInterfaces_InterfaceType = 81 - // IETFInterfaces_InterfaceType_fastEther corresponds to the value fastEther of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fastEther E_IETFInterfaces_InterfaceType = 82 - // IETFInterfaces_InterfaceType_fastEtherFX corresponds to the value fastEtherFX of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fastEtherFX E_IETFInterfaces_InterfaceType = 83 - // IETFInterfaces_InterfaceType_fcipLink corresponds to the value fcipLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fcipLink E_IETFInterfaces_InterfaceType = 84 - // IETFInterfaces_InterfaceType_fddi corresponds to the value fddi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fddi E_IETFInterfaces_InterfaceType = 85 - // IETFInterfaces_InterfaceType_fibreChannel corresponds to the value fibreChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fibreChannel E_IETFInterfaces_InterfaceType = 86 - // IETFInterfaces_InterfaceType_frDlciEndPt corresponds to the value frDlciEndPt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frDlciEndPt E_IETFInterfaces_InterfaceType = 87 - // IETFInterfaces_InterfaceType_frForward corresponds to the value frForward of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frForward E_IETFInterfaces_InterfaceType = 88 - // IETFInterfaces_InterfaceType_frameRelay corresponds to the value frameRelay of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelay E_IETFInterfaces_InterfaceType = 89 - // IETFInterfaces_InterfaceType_frameRelayInterconnect corresponds to the value frameRelayInterconnect of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayInterconnect E_IETFInterfaces_InterfaceType = 90 - // IETFInterfaces_InterfaceType_frameRelayMPI corresponds to the value frameRelayMPI of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayMPI E_IETFInterfaces_InterfaceType = 91 - // IETFInterfaces_InterfaceType_frameRelayService corresponds to the value frameRelayService of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayService E_IETFInterfaces_InterfaceType = 92 - // IETFInterfaces_InterfaceType_frf16MfrBundle corresponds to the value frf16MfrBundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frf16MfrBundle E_IETFInterfaces_InterfaceType = 93 - // IETFInterfaces_InterfaceType_g703at2mb corresponds to the value g703at2mb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g703at2mb E_IETFInterfaces_InterfaceType = 94 - // IETFInterfaces_InterfaceType_g703at64k corresponds to the value g703at64k of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g703at64k E_IETFInterfaces_InterfaceType = 95 - // IETFInterfaces_InterfaceType_g9981 corresponds to the value g9981 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9981 E_IETFInterfaces_InterfaceType = 96 - // IETFInterfaces_InterfaceType_g9982 corresponds to the value g9982 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9982 E_IETFInterfaces_InterfaceType = 97 - // IETFInterfaces_InterfaceType_g9983 corresponds to the value g9983 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9983 E_IETFInterfaces_InterfaceType = 98 - // IETFInterfaces_InterfaceType_gfp corresponds to the value gfp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gfp E_IETFInterfaces_InterfaceType = 99 - // IETFInterfaces_InterfaceType_gigabitEthernet corresponds to the value gigabitEthernet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gigabitEthernet E_IETFInterfaces_InterfaceType = 100 - // IETFInterfaces_InterfaceType_gpon corresponds to the value gpon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gpon E_IETFInterfaces_InterfaceType = 101 - // IETFInterfaces_InterfaceType_gr303IDT corresponds to the value gr303IDT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gr303IDT E_IETFInterfaces_InterfaceType = 102 - // IETFInterfaces_InterfaceType_gr303RDT corresponds to the value gr303RDT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gr303RDT E_IETFInterfaces_InterfaceType = 103 - // IETFInterfaces_InterfaceType_gtp corresponds to the value gtp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gtp E_IETFInterfaces_InterfaceType = 104 - // IETFInterfaces_InterfaceType_h323Gatekeeper corresponds to the value h323Gatekeeper of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_h323Gatekeeper E_IETFInterfaces_InterfaceType = 105 - // IETFInterfaces_InterfaceType_h323Proxy corresponds to the value h323Proxy of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_h323Proxy E_IETFInterfaces_InterfaceType = 106 - // IETFInterfaces_InterfaceType_hdh1822 corresponds to the value hdh1822 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdh1822 E_IETFInterfaces_InterfaceType = 107 - // IETFInterfaces_InterfaceType_hdlc corresponds to the value hdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdlc E_IETFInterfaces_InterfaceType = 108 - // IETFInterfaces_InterfaceType_hdsl2 corresponds to the value hdsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdsl2 E_IETFInterfaces_InterfaceType = 109 - // IETFInterfaces_InterfaceType_hiperlan2 corresponds to the value hiperlan2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hiperlan2 E_IETFInterfaces_InterfaceType = 110 - // IETFInterfaces_InterfaceType_hippi corresponds to the value hippi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hippi E_IETFInterfaces_InterfaceType = 111 - // IETFInterfaces_InterfaceType_hippiInterface corresponds to the value hippiInterface of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hippiInterface E_IETFInterfaces_InterfaceType = 112 - // IETFInterfaces_InterfaceType_homepna corresponds to the value homepna of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_homepna E_IETFInterfaces_InterfaceType = 113 - // IETFInterfaces_InterfaceType_hostPad corresponds to the value hostPad of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hostPad E_IETFInterfaces_InterfaceType = 114 - // IETFInterfaces_InterfaceType_hssi corresponds to the value hssi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hssi E_IETFInterfaces_InterfaceType = 115 - // IETFInterfaces_InterfaceType_hyperchannel corresponds to the value hyperchannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hyperchannel E_IETFInterfaces_InterfaceType = 116 - // IETFInterfaces_InterfaceType_iana_interface_type corresponds to the value iana_interface_type of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iana_interface_type E_IETFInterfaces_InterfaceType = 117 - // IETFInterfaces_InterfaceType_ibm370parChan corresponds to the value ibm370parChan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ibm370parChan E_IETFInterfaces_InterfaceType = 118 - // IETFInterfaces_InterfaceType_idsl corresponds to the value idsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_idsl E_IETFInterfaces_InterfaceType = 119 - // IETFInterfaces_InterfaceType_ieee1394 corresponds to the value ieee1394 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee1394 E_IETFInterfaces_InterfaceType = 120 - // IETFInterfaces_InterfaceType_ieee80211 corresponds to the value ieee80211 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80211 E_IETFInterfaces_InterfaceType = 121 - // IETFInterfaces_InterfaceType_ieee80212 corresponds to the value ieee80212 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80212 E_IETFInterfaces_InterfaceType = 122 - // IETFInterfaces_InterfaceType_ieee802154 corresponds to the value ieee802154 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee802154 E_IETFInterfaces_InterfaceType = 123 - // IETFInterfaces_InterfaceType_ieee80216WMAN corresponds to the value ieee80216WMAN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80216WMAN E_IETFInterfaces_InterfaceType = 124 - // IETFInterfaces_InterfaceType_ieee8023adLag corresponds to the value ieee8023adLag of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee8023adLag E_IETFInterfaces_InterfaceType = 125 - // IETFInterfaces_InterfaceType_if_gsn corresponds to the value if_gsn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_if_gsn E_IETFInterfaces_InterfaceType = 126 - // IETFInterfaces_InterfaceType_ifPwType corresponds to the value ifPwType of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ifPwType E_IETFInterfaces_InterfaceType = 127 - // IETFInterfaces_InterfaceType_ifVfiType corresponds to the value ifVfiType of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ifVfiType E_IETFInterfaces_InterfaceType = 128 - // IETFInterfaces_InterfaceType_ilan corresponds to the value ilan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ilan E_IETFInterfaces_InterfaceType = 129 - // IETFInterfaces_InterfaceType_imt corresponds to the value imt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_imt E_IETFInterfaces_InterfaceType = 130 - // IETFInterfaces_InterfaceType_infiniband corresponds to the value infiniband of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_infiniband E_IETFInterfaces_InterfaceType = 131 - // IETFInterfaces_InterfaceType_interleave corresponds to the value interleave of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_interleave E_IETFInterfaces_InterfaceType = 132 - // IETFInterfaces_InterfaceType_ip corresponds to the value ip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ip E_IETFInterfaces_InterfaceType = 133 - // IETFInterfaces_InterfaceType_ipForward corresponds to the value ipForward of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipForward E_IETFInterfaces_InterfaceType = 134 - // IETFInterfaces_InterfaceType_ipOverAtm corresponds to the value ipOverAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverAtm E_IETFInterfaces_InterfaceType = 135 - // IETFInterfaces_InterfaceType_ipOverCdlc corresponds to the value ipOverCdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverCdlc E_IETFInterfaces_InterfaceType = 136 - // IETFInterfaces_InterfaceType_ipOverClaw corresponds to the value ipOverClaw of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverClaw E_IETFInterfaces_InterfaceType = 137 - // IETFInterfaces_InterfaceType_ipSwitch corresponds to the value ipSwitch of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipSwitch E_IETFInterfaces_InterfaceType = 138 - // IETFInterfaces_InterfaceType_isdn corresponds to the value isdn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdn E_IETFInterfaces_InterfaceType = 139 - // IETFInterfaces_InterfaceType_isdns corresponds to the value isdns of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdns E_IETFInterfaces_InterfaceType = 140 - // IETFInterfaces_InterfaceType_isdnu corresponds to the value isdnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdnu E_IETFInterfaces_InterfaceType = 141 - // IETFInterfaces_InterfaceType_iso88022llc corresponds to the value iso88022llc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88022llc E_IETFInterfaces_InterfaceType = 142 - // IETFInterfaces_InterfaceType_iso88023Csmacd corresponds to the value iso88023Csmacd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88023Csmacd E_IETFInterfaces_InterfaceType = 143 - // IETFInterfaces_InterfaceType_iso88024TokenBus corresponds to the value iso88024TokenBus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88024TokenBus E_IETFInterfaces_InterfaceType = 144 - // IETFInterfaces_InterfaceType_iso88025CRFPInt corresponds to the value iso88025CRFPInt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025CRFPInt E_IETFInterfaces_InterfaceType = 145 - // IETFInterfaces_InterfaceType_iso88025Dtr corresponds to the value iso88025Dtr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025Dtr E_IETFInterfaces_InterfaceType = 146 - // IETFInterfaces_InterfaceType_iso88025Fiber corresponds to the value iso88025Fiber of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025Fiber E_IETFInterfaces_InterfaceType = 147 - // IETFInterfaces_InterfaceType_iso88025TokenRing corresponds to the value iso88025TokenRing of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025TokenRing E_IETFInterfaces_InterfaceType = 148 - // IETFInterfaces_InterfaceType_iso88026Man corresponds to the value iso88026Man of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88026Man E_IETFInterfaces_InterfaceType = 149 - // IETFInterfaces_InterfaceType_isup corresponds to the value isup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isup E_IETFInterfaces_InterfaceType = 150 - // IETFInterfaces_InterfaceType_l2vlan corresponds to the value l2vlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l2vlan E_IETFInterfaces_InterfaceType = 151 - // IETFInterfaces_InterfaceType_l3ipvlan corresponds to the value l3ipvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l3ipvlan E_IETFInterfaces_InterfaceType = 152 - // IETFInterfaces_InterfaceType_l3ipxvlan corresponds to the value l3ipxvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l3ipxvlan E_IETFInterfaces_InterfaceType = 153 - // IETFInterfaces_InterfaceType_lapb corresponds to the value lapb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapb E_IETFInterfaces_InterfaceType = 154 - // IETFInterfaces_InterfaceType_lapd corresponds to the value lapd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapd E_IETFInterfaces_InterfaceType = 155 - // IETFInterfaces_InterfaceType_lapf corresponds to the value lapf of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapf E_IETFInterfaces_InterfaceType = 156 - // IETFInterfaces_InterfaceType_linegroup corresponds to the value linegroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_linegroup E_IETFInterfaces_InterfaceType = 157 - // IETFInterfaces_InterfaceType_lmp corresponds to the value lmp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lmp E_IETFInterfaces_InterfaceType = 158 - // IETFInterfaces_InterfaceType_localTalk corresponds to the value localTalk of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_localTalk E_IETFInterfaces_InterfaceType = 159 - // IETFInterfaces_InterfaceType_macSecControlledIF corresponds to the value macSecControlledIF of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_macSecControlledIF E_IETFInterfaces_InterfaceType = 160 - // IETFInterfaces_InterfaceType_macSecUncontrolledIF corresponds to the value macSecUncontrolledIF of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_macSecUncontrolledIF E_IETFInterfaces_InterfaceType = 161 - // IETFInterfaces_InterfaceType_mediaMailOverIp corresponds to the value mediaMailOverIp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mediaMailOverIp E_IETFInterfaces_InterfaceType = 162 - // IETFInterfaces_InterfaceType_mfSigLink corresponds to the value mfSigLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mfSigLink E_IETFInterfaces_InterfaceType = 163 - // IETFInterfaces_InterfaceType_miox25 corresponds to the value miox25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_miox25 E_IETFInterfaces_InterfaceType = 164 - // IETFInterfaces_InterfaceType_mocaVersion1 corresponds to the value mocaVersion1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mocaVersion1 E_IETFInterfaces_InterfaceType = 165 - // IETFInterfaces_InterfaceType_modem corresponds to the value modem of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_modem E_IETFInterfaces_InterfaceType = 166 - // IETFInterfaces_InterfaceType_mpc corresponds to the value mpc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpc E_IETFInterfaces_InterfaceType = 167 - // IETFInterfaces_InterfaceType_mpegTransport corresponds to the value mpegTransport of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpegTransport E_IETFInterfaces_InterfaceType = 168 - // IETFInterfaces_InterfaceType_mpls corresponds to the value mpls of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpls E_IETFInterfaces_InterfaceType = 169 - // IETFInterfaces_InterfaceType_mplsTunnel corresponds to the value mplsTunnel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mplsTunnel E_IETFInterfaces_InterfaceType = 170 - // IETFInterfaces_InterfaceType_msdsl corresponds to the value msdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_msdsl E_IETFInterfaces_InterfaceType = 171 - // IETFInterfaces_InterfaceType_mvl corresponds to the value mvl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mvl E_IETFInterfaces_InterfaceType = 172 - // IETFInterfaces_InterfaceType_myrinet corresponds to the value myrinet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_myrinet E_IETFInterfaces_InterfaceType = 173 - // IETFInterfaces_InterfaceType_nfas corresponds to the value nfas of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_nfas E_IETFInterfaces_InterfaceType = 174 - // IETFInterfaces_InterfaceType_nsip corresponds to the value nsip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_nsip E_IETFInterfaces_InterfaceType = 175 - // IETFInterfaces_InterfaceType_opticalChannel corresponds to the value opticalChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalChannel E_IETFInterfaces_InterfaceType = 176 - // IETFInterfaces_InterfaceType_opticalChannelGroup corresponds to the value opticalChannelGroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalChannelGroup E_IETFInterfaces_InterfaceType = 177 - // IETFInterfaces_InterfaceType_opticalTransport corresponds to the value opticalTransport of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalTransport E_IETFInterfaces_InterfaceType = 178 - // IETFInterfaces_InterfaceType_other corresponds to the value other of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_other E_IETFInterfaces_InterfaceType = 179 - // IETFInterfaces_InterfaceType_otnOdu corresponds to the value otnOdu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_otnOdu E_IETFInterfaces_InterfaceType = 180 - // IETFInterfaces_InterfaceType_otnOtu corresponds to the value otnOtu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_otnOtu E_IETFInterfaces_InterfaceType = 181 - // IETFInterfaces_InterfaceType_para corresponds to the value para of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_para E_IETFInterfaces_InterfaceType = 182 - // IETFInterfaces_InterfaceType_pdnEtherLoop1 corresponds to the value pdnEtherLoop1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pdnEtherLoop1 E_IETFInterfaces_InterfaceType = 183 - // IETFInterfaces_InterfaceType_pdnEtherLoop2 corresponds to the value pdnEtherLoop2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pdnEtherLoop2 E_IETFInterfaces_InterfaceType = 184 - // IETFInterfaces_InterfaceType_pip corresponds to the value pip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pip E_IETFInterfaces_InterfaceType = 185 - // IETFInterfaces_InterfaceType_plc corresponds to the value plc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_plc E_IETFInterfaces_InterfaceType = 186 - // IETFInterfaces_InterfaceType_pon155 corresponds to the value pon155 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pon155 E_IETFInterfaces_InterfaceType = 187 - // IETFInterfaces_InterfaceType_pon622 corresponds to the value pon622 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pon622 E_IETFInterfaces_InterfaceType = 188 - // IETFInterfaces_InterfaceType_pos corresponds to the value pos of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pos E_IETFInterfaces_InterfaceType = 189 - // IETFInterfaces_InterfaceType_ppp corresponds to the value ppp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ppp E_IETFInterfaces_InterfaceType = 190 - // IETFInterfaces_InterfaceType_pppMultilinkBundle corresponds to the value pppMultilinkBundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pppMultilinkBundle E_IETFInterfaces_InterfaceType = 191 - // IETFInterfaces_InterfaceType_primaryISDN corresponds to the value primaryISDN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_primaryISDN E_IETFInterfaces_InterfaceType = 192 - // IETFInterfaces_InterfaceType_propAtm corresponds to the value propAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propAtm E_IETFInterfaces_InterfaceType = 193 - // IETFInterfaces_InterfaceType_propBWAp2Mp corresponds to the value propBWAp2Mp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propBWAp2Mp E_IETFInterfaces_InterfaceType = 194 - // IETFInterfaces_InterfaceType_propCnls corresponds to the value propCnls of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propCnls E_IETFInterfaces_InterfaceType = 195 - // IETFInterfaces_InterfaceType_propDocsWirelessDownstream corresponds to the value propDocsWirelessDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessDownstream E_IETFInterfaces_InterfaceType = 196 - // IETFInterfaces_InterfaceType_propDocsWirelessMaclayer corresponds to the value propDocsWirelessMaclayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessMaclayer E_IETFInterfaces_InterfaceType = 197 - // IETFInterfaces_InterfaceType_propDocsWirelessUpstream corresponds to the value propDocsWirelessUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessUpstream E_IETFInterfaces_InterfaceType = 198 - // IETFInterfaces_InterfaceType_propMultiplexor corresponds to the value propMultiplexor of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propMultiplexor E_IETFInterfaces_InterfaceType = 199 - // IETFInterfaces_InterfaceType_propPointToPointSerial corresponds to the value propPointToPointSerial of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propPointToPointSerial E_IETFInterfaces_InterfaceType = 200 - // IETFInterfaces_InterfaceType_propVirtual corresponds to the value propVirtual of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propVirtual E_IETFInterfaces_InterfaceType = 201 - // IETFInterfaces_InterfaceType_propWirelessP2P corresponds to the value propWirelessP2P of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propWirelessP2P E_IETFInterfaces_InterfaceType = 202 - // IETFInterfaces_InterfaceType_proteon10Mbit corresponds to the value proteon10Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_proteon10Mbit E_IETFInterfaces_InterfaceType = 203 - // IETFInterfaces_InterfaceType_proteon80Mbit corresponds to the value proteon80Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_proteon80Mbit E_IETFInterfaces_InterfaceType = 204 - // IETFInterfaces_InterfaceType_q2931 corresponds to the value q2931 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_q2931 E_IETFInterfaces_InterfaceType = 205 - // IETFInterfaces_InterfaceType_qam corresponds to the value qam of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_qam E_IETFInterfaces_InterfaceType = 206 - // IETFInterfaces_InterfaceType_qllc corresponds to the value qllc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_qllc E_IETFInterfaces_InterfaceType = 207 - // IETFInterfaces_InterfaceType_radioMAC corresponds to the value radioMAC of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_radioMAC E_IETFInterfaces_InterfaceType = 208 - // IETFInterfaces_InterfaceType_radsl corresponds to the value radsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_radsl E_IETFInterfaces_InterfaceType = 209 - // IETFInterfaces_InterfaceType_reachDSL corresponds to the value reachDSL of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_reachDSL E_IETFInterfaces_InterfaceType = 210 - // IETFInterfaces_InterfaceType_regular1822 corresponds to the value regular1822 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_regular1822 E_IETFInterfaces_InterfaceType = 211 - // IETFInterfaces_InterfaceType_rfc1483 corresponds to the value rfc1483 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rfc1483 E_IETFInterfaces_InterfaceType = 212 - // IETFInterfaces_InterfaceType_rfc877x25 corresponds to the value rfc877x25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rfc877x25 E_IETFInterfaces_InterfaceType = 213 - // IETFInterfaces_InterfaceType_rpr corresponds to the value rpr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rpr E_IETFInterfaces_InterfaceType = 214 - // IETFInterfaces_InterfaceType_rs232 corresponds to the value rs232 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rs232 E_IETFInterfaces_InterfaceType = 215 - // IETFInterfaces_InterfaceType_rsrb corresponds to the value rsrb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rsrb E_IETFInterfaces_InterfaceType = 216 - // IETFInterfaces_InterfaceType_sdlc corresponds to the value sdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sdlc E_IETFInterfaces_InterfaceType = 217 - // IETFInterfaces_InterfaceType_sdsl corresponds to the value sdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sdsl E_IETFInterfaces_InterfaceType = 218 - // IETFInterfaces_InterfaceType_shdsl corresponds to the value shdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_shdsl E_IETFInterfaces_InterfaceType = 219 - // IETFInterfaces_InterfaceType_sip corresponds to the value sip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sip E_IETFInterfaces_InterfaceType = 220 - // IETFInterfaces_InterfaceType_sipSig corresponds to the value sipSig of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sipSig E_IETFInterfaces_InterfaceType = 221 - // IETFInterfaces_InterfaceType_sipTg corresponds to the value sipTg of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sipTg E_IETFInterfaces_InterfaceType = 222 - // IETFInterfaces_InterfaceType_sixToFour corresponds to the value sixToFour of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sixToFour E_IETFInterfaces_InterfaceType = 223 - // IETFInterfaces_InterfaceType_slip corresponds to the value slip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_slip E_IETFInterfaces_InterfaceType = 224 - // IETFInterfaces_InterfaceType_smdsDxi corresponds to the value smdsDxi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_smdsDxi E_IETFInterfaces_InterfaceType = 225 - // IETFInterfaces_InterfaceType_smdsIcip corresponds to the value smdsIcip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_smdsIcip E_IETFInterfaces_InterfaceType = 226 - // IETFInterfaces_InterfaceType_softwareLoopback corresponds to the value softwareLoopback of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_softwareLoopback E_IETFInterfaces_InterfaceType = 227 - // IETFInterfaces_InterfaceType_sonet corresponds to the value sonet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonet E_IETFInterfaces_InterfaceType = 228 - // IETFInterfaces_InterfaceType_sonetOverheadChannel corresponds to the value sonetOverheadChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetOverheadChannel E_IETFInterfaces_InterfaceType = 229 - // IETFInterfaces_InterfaceType_sonetPath corresponds to the value sonetPath of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetPath E_IETFInterfaces_InterfaceType = 230 - // IETFInterfaces_InterfaceType_sonetVT corresponds to the value sonetVT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetVT E_IETFInterfaces_InterfaceType = 231 - // IETFInterfaces_InterfaceType_srp corresponds to the value srp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_srp E_IETFInterfaces_InterfaceType = 232 - // IETFInterfaces_InterfaceType_ss7SigLink corresponds to the value ss7SigLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ss7SigLink E_IETFInterfaces_InterfaceType = 233 - // IETFInterfaces_InterfaceType_stackToStack corresponds to the value stackToStack of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_stackToStack E_IETFInterfaces_InterfaceType = 234 - // IETFInterfaces_InterfaceType_starLan corresponds to the value starLan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_starLan E_IETFInterfaces_InterfaceType = 235 - // IETFInterfaces_InterfaceType_tdlc corresponds to the value tdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tdlc E_IETFInterfaces_InterfaceType = 236 - // IETFInterfaces_InterfaceType_teLink corresponds to the value teLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_teLink E_IETFInterfaces_InterfaceType = 237 - // IETFInterfaces_InterfaceType_termPad corresponds to the value termPad of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_termPad E_IETFInterfaces_InterfaceType = 238 - // IETFInterfaces_InterfaceType_tr008 corresponds to the value tr008 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tr008 E_IETFInterfaces_InterfaceType = 239 - // IETFInterfaces_InterfaceType_transpHdlc corresponds to the value transpHdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_transpHdlc E_IETFInterfaces_InterfaceType = 240 - // IETFInterfaces_InterfaceType_tunnel corresponds to the value tunnel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tunnel E_IETFInterfaces_InterfaceType = 241 - // IETFInterfaces_InterfaceType_ultra corresponds to the value ultra of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ultra E_IETFInterfaces_InterfaceType = 242 - // IETFInterfaces_InterfaceType_usb corresponds to the value usb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_usb E_IETFInterfaces_InterfaceType = 243 - // IETFInterfaces_InterfaceType_v11 corresponds to the value v11 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v11 E_IETFInterfaces_InterfaceType = 244 - // IETFInterfaces_InterfaceType_v35 corresponds to the value v35 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v35 E_IETFInterfaces_InterfaceType = 245 - // IETFInterfaces_InterfaceType_v36 corresponds to the value v36 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v36 E_IETFInterfaces_InterfaceType = 246 - // IETFInterfaces_InterfaceType_v37 corresponds to the value v37 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v37 E_IETFInterfaces_InterfaceType = 247 - // IETFInterfaces_InterfaceType_vdsl corresponds to the value vdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vdsl E_IETFInterfaces_InterfaceType = 248 - // IETFInterfaces_InterfaceType_vdsl2 corresponds to the value vdsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vdsl2 E_IETFInterfaces_InterfaceType = 249 - // IETFInterfaces_InterfaceType_virtualIpAddress corresponds to the value virtualIpAddress of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_virtualIpAddress E_IETFInterfaces_InterfaceType = 250 - // IETFInterfaces_InterfaceType_virtualTg corresponds to the value virtualTg of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_virtualTg E_IETFInterfaces_InterfaceType = 251 - // IETFInterfaces_InterfaceType_vmwareNicTeam corresponds to the value vmwareNicTeam of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vmwareNicTeam E_IETFInterfaces_InterfaceType = 252 - // IETFInterfaces_InterfaceType_vmwareVirtualNic corresponds to the value vmwareVirtualNic of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vmwareVirtualNic E_IETFInterfaces_InterfaceType = 253 - // IETFInterfaces_InterfaceType_voiceDID corresponds to the value voiceDID of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceDID E_IETFInterfaces_InterfaceType = 254 - // IETFInterfaces_InterfaceType_voiceEBS corresponds to the value voiceEBS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEBS E_IETFInterfaces_InterfaceType = 255 - // IETFInterfaces_InterfaceType_voiceEM corresponds to the value voiceEM of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEM E_IETFInterfaces_InterfaceType = 256 - // IETFInterfaces_InterfaceType_voiceEMFGD corresponds to the value voiceEMFGD of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEMFGD E_IETFInterfaces_InterfaceType = 257 - // IETFInterfaces_InterfaceType_voiceEncap corresponds to the value voiceEncap of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEncap E_IETFInterfaces_InterfaceType = 258 - // IETFInterfaces_InterfaceType_voiceFGDEANA corresponds to the value voiceFGDEANA of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFGDEANA E_IETFInterfaces_InterfaceType = 259 - // IETFInterfaces_InterfaceType_voiceFGDOS corresponds to the value voiceFGDOS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFGDOS E_IETFInterfaces_InterfaceType = 260 - // IETFInterfaces_InterfaceType_voiceFXO corresponds to the value voiceFXO of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFXO E_IETFInterfaces_InterfaceType = 261 - // IETFInterfaces_InterfaceType_voiceFXS corresponds to the value voiceFXS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFXS E_IETFInterfaces_InterfaceType = 262 - // IETFInterfaces_InterfaceType_voiceOverAtm corresponds to the value voiceOverAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverAtm E_IETFInterfaces_InterfaceType = 263 - // IETFInterfaces_InterfaceType_voiceOverCable corresponds to the value voiceOverCable of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverCable E_IETFInterfaces_InterfaceType = 264 - // IETFInterfaces_InterfaceType_voiceOverFrameRelay corresponds to the value voiceOverFrameRelay of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverFrameRelay E_IETFInterfaces_InterfaceType = 265 - // IETFInterfaces_InterfaceType_voiceOverIp corresponds to the value voiceOverIp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverIp E_IETFInterfaces_InterfaceType = 266 - // IETFInterfaces_InterfaceType_wwanPP corresponds to the value wwanPP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_wwanPP E_IETFInterfaces_InterfaceType = 267 - // IETFInterfaces_InterfaceType_wwanPP2 corresponds to the value wwanPP2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_wwanPP2 E_IETFInterfaces_InterfaceType = 268 - // IETFInterfaces_InterfaceType_x213 corresponds to the value x213 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x213 E_IETFInterfaces_InterfaceType = 269 - // IETFInterfaces_InterfaceType_x25huntGroup corresponds to the value x25huntGroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25huntGroup E_IETFInterfaces_InterfaceType = 270 - // IETFInterfaces_InterfaceType_x25mlp corresponds to the value x25mlp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25mlp E_IETFInterfaces_InterfaceType = 271 - // IETFInterfaces_InterfaceType_x25ple corresponds to the value x25ple of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25ple E_IETFInterfaces_InterfaceType = 272 - // IETFInterfaces_InterfaceType_x86Laps corresponds to the value x86Laps of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x86Laps E_IETFInterfaces_InterfaceType = 273 -) - -// E_Interface_AdminStatus is a derived int64 type which is used to represent -// the enumerated node Interface_AdminStatus. An additional value named -// Interface_AdminStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Interface_AdminStatus int64 - -// IsYANGGoEnum ensures that Interface_AdminStatus implements the yang.GoEnum -// interface. This ensures that Interface_AdminStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_Interface_AdminStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Interface_AdminStatus. -func (E_Interface_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Interface_AdminStatus. -func (e E_Interface_AdminStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_Interface_AdminStatus") -} - -const ( - // Interface_AdminStatus_UNSET corresponds to the value UNSET of Interface_AdminStatus - Interface_AdminStatus_UNSET E_Interface_AdminStatus = 0 - // Interface_AdminStatus_UP corresponds to the value UP of Interface_AdminStatus - Interface_AdminStatus_UP E_Interface_AdminStatus = 1 - // Interface_AdminStatus_DOWN corresponds to the value DOWN of Interface_AdminStatus - Interface_AdminStatus_DOWN E_Interface_AdminStatus = 2 - // Interface_AdminStatus_TESTING corresponds to the value TESTING of Interface_AdminStatus - Interface_AdminStatus_TESTING E_Interface_AdminStatus = 3 -) - -// E_Interface_OperStatus is a derived int64 type which is used to represent -// the enumerated node Interface_OperStatus. An additional value named -// Interface_OperStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Interface_OperStatus int64 - -// IsYANGGoEnum ensures that Interface_OperStatus implements the yang.GoEnum -// interface. This ensures that Interface_OperStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_Interface_OperStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Interface_OperStatus. -func (E_Interface_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Interface_OperStatus. -func (e E_Interface_OperStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_Interface_OperStatus") -} - -const ( - // Interface_OperStatus_UNSET corresponds to the value UNSET of Interface_OperStatus - Interface_OperStatus_UNSET E_Interface_OperStatus = 0 - // Interface_OperStatus_UP corresponds to the value UP of Interface_OperStatus - Interface_OperStatus_UP E_Interface_OperStatus = 1 - // Interface_OperStatus_DOWN corresponds to the value DOWN of Interface_OperStatus - Interface_OperStatus_DOWN E_Interface_OperStatus = 2 - // Interface_OperStatus_TESTING corresponds to the value TESTING of Interface_OperStatus - Interface_OperStatus_TESTING E_Interface_OperStatus = 3 - // Interface_OperStatus_UNKNOWN corresponds to the value UNKNOWN of Interface_OperStatus - Interface_OperStatus_UNKNOWN E_Interface_OperStatus = 4 - // Interface_OperStatus_DORMANT corresponds to the value DORMANT of Interface_OperStatus - Interface_OperStatus_DORMANT E_Interface_OperStatus = 5 - // Interface_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of Interface_OperStatus - Interface_OperStatus_NOT_PRESENT E_Interface_OperStatus = 6 - // Interface_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of Interface_OperStatus - Interface_OperStatus_LOWER_LAYER_DOWN E_Interface_OperStatus = 7 -) - -// E_Neighbor_NeighborState is a derived int64 type which is used to represent -// the enumerated node Neighbor_NeighborState. An additional value named -// Neighbor_NeighborState_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Neighbor_NeighborState int64 - -// IsYANGGoEnum ensures that Neighbor_NeighborState implements the yang.GoEnum -// interface. This ensures that Neighbor_NeighborState can be identified as a -// mapped type for a YANG enumeration. -func (E_Neighbor_NeighborState) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Neighbor_NeighborState. -func (E_Neighbor_NeighborState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Neighbor_NeighborState. -func (e E_Neighbor_NeighborState) String() string { - return ygot.EnumLogString(e, int64(e), "E_Neighbor_NeighborState") -} - -const ( - // Neighbor_NeighborState_UNSET corresponds to the value UNSET of Neighbor_NeighborState - Neighbor_NeighborState_UNSET E_Neighbor_NeighborState = 0 - // Neighbor_NeighborState_INCOMPLETE corresponds to the value INCOMPLETE of Neighbor_NeighborState - Neighbor_NeighborState_INCOMPLETE E_Neighbor_NeighborState = 1 - // Neighbor_NeighborState_REACHABLE corresponds to the value REACHABLE of Neighbor_NeighborState - Neighbor_NeighborState_REACHABLE E_Neighbor_NeighborState = 2 - // Neighbor_NeighborState_STALE corresponds to the value STALE of Neighbor_NeighborState - Neighbor_NeighborState_STALE E_Neighbor_NeighborState = 3 - // Neighbor_NeighborState_DELAY corresponds to the value DELAY of Neighbor_NeighborState - Neighbor_NeighborState_DELAY E_Neighbor_NeighborState = 4 - // Neighbor_NeighborState_PROBE corresponds to the value PROBE of Neighbor_NeighborState - Neighbor_NeighborState_PROBE E_Neighbor_NeighborState = 5 -) - -// E_OpenconfigIfAggregate_AggregationType is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfAggregate_AggregationType. An additional value named -// OpenconfigIfAggregate_AggregationType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfAggregate_AggregationType int64 - -// IsYANGGoEnum ensures that OpenconfigIfAggregate_AggregationType implements the yang.GoEnum -// interface. This ensures that OpenconfigIfAggregate_AggregationType can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfAggregate_AggregationType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfAggregate_AggregationType. -func (E_OpenconfigIfAggregate_AggregationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfAggregate_AggregationType. -func (e E_OpenconfigIfAggregate_AggregationType) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfAggregate_AggregationType") -} - -const ( - // OpenconfigIfAggregate_AggregationType_UNSET corresponds to the value UNSET of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_UNSET E_OpenconfigIfAggregate_AggregationType = 0 - // OpenconfigIfAggregate_AggregationType_LACP corresponds to the value LACP of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_LACP E_OpenconfigIfAggregate_AggregationType = 1 - // OpenconfigIfAggregate_AggregationType_STATIC corresponds to the value STATIC of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_STATIC E_OpenconfigIfAggregate_AggregationType = 2 -) - -// E_OpenconfigIfEthernet_ETHERNET_SPEED is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfEthernet_ETHERNET_SPEED. An additional value named -// OpenconfigIfEthernet_ETHERNET_SPEED_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfEthernet_ETHERNET_SPEED int64 - -// IsYANGGoEnum ensures that OpenconfigIfEthernet_ETHERNET_SPEED implements the yang.GoEnum -// interface. This ensures that OpenconfigIfEthernet_ETHERNET_SPEED can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfEthernet_ETHERNET_SPEED) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfEthernet_ETHERNET_SPEED. -func (E_OpenconfigIfEthernet_ETHERNET_SPEED) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfEthernet_ETHERNET_SPEED. -func (e E_OpenconfigIfEthernet_ETHERNET_SPEED) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfEthernet_ETHERNET_SPEED") -} - -const ( - // OpenconfigIfEthernet_ETHERNET_SPEED_UNSET corresponds to the value UNSET of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_UNSET E_OpenconfigIfEthernet_ETHERNET_SPEED = 0 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB corresponds to the value SPEED_100GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 1 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB corresponds to the value SPEED_100MB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 2 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB corresponds to the value SPEED_10GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 3 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB corresponds to the value SPEED_10MB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 4 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB corresponds to the value SPEED_1GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 5 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB corresponds to the value SPEED_25GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 6 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB corresponds to the value SPEED_40GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 7 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB corresponds to the value SPEED_50GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 8 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN corresponds to the value SPEED_UNKNOWN of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN E_OpenconfigIfEthernet_ETHERNET_SPEED = 9 -) - -// E_OpenconfigIfIp_IpAddressOrigin is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfIp_IpAddressOrigin. An additional value named -// OpenconfigIfIp_IpAddressOrigin_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfIp_IpAddressOrigin int64 - -// IsYANGGoEnum ensures that OpenconfigIfIp_IpAddressOrigin implements the yang.GoEnum -// interface. This ensures that OpenconfigIfIp_IpAddressOrigin can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfIp_IpAddressOrigin) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfIp_IpAddressOrigin. -func (E_OpenconfigIfIp_IpAddressOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfIp_IpAddressOrigin. -func (e E_OpenconfigIfIp_IpAddressOrigin) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_IpAddressOrigin") -} - -const ( - // OpenconfigIfIp_IpAddressOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_UNSET E_OpenconfigIfIp_IpAddressOrigin = 0 - // OpenconfigIfIp_IpAddressOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_OTHER E_OpenconfigIfIp_IpAddressOrigin = 1 - // OpenconfigIfIp_IpAddressOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_STATIC E_OpenconfigIfIp_IpAddressOrigin = 2 - // OpenconfigIfIp_IpAddressOrigin_DHCP corresponds to the value DHCP of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_DHCP E_OpenconfigIfIp_IpAddressOrigin = 3 - // OpenconfigIfIp_IpAddressOrigin_LINK_LAYER corresponds to the value LINK_LAYER of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_LINK_LAYER E_OpenconfigIfIp_IpAddressOrigin = 4 - // OpenconfigIfIp_IpAddressOrigin_RANDOM corresponds to the value RANDOM of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_RANDOM E_OpenconfigIfIp_IpAddressOrigin = 5 -) - -// E_OpenconfigIfIp_NeighborOrigin is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfIp_NeighborOrigin. An additional value named -// OpenconfigIfIp_NeighborOrigin_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfIp_NeighborOrigin int64 - -// IsYANGGoEnum ensures that OpenconfigIfIp_NeighborOrigin implements the yang.GoEnum -// interface. This ensures that OpenconfigIfIp_NeighborOrigin can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfIp_NeighborOrigin) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfIp_NeighborOrigin. -func (E_OpenconfigIfIp_NeighborOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfIp_NeighborOrigin. -func (e E_OpenconfigIfIp_NeighborOrigin) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_NeighborOrigin") -} - -const ( - // OpenconfigIfIp_NeighborOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_UNSET E_OpenconfigIfIp_NeighborOrigin = 0 - // OpenconfigIfIp_NeighborOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_OTHER E_OpenconfigIfIp_NeighborOrigin = 1 - // OpenconfigIfIp_NeighborOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_STATIC E_OpenconfigIfIp_NeighborOrigin = 2 - // OpenconfigIfIp_NeighborOrigin_DYNAMIC corresponds to the value DYNAMIC of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_DYNAMIC E_OpenconfigIfIp_NeighborOrigin = 3 -) - -// E_OpenconfigVlanTypes_TPID_TYPES is a derived int64 type which is used to represent -// the enumerated node OpenconfigVlanTypes_TPID_TYPES. An additional value named -// OpenconfigVlanTypes_TPID_TYPES_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigVlanTypes_TPID_TYPES int64 - -// IsYANGGoEnum ensures that OpenconfigVlanTypes_TPID_TYPES implements the yang.GoEnum -// interface. This ensures that OpenconfigVlanTypes_TPID_TYPES can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigVlanTypes_TPID_TYPES) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigVlanTypes_TPID_TYPES. -func (E_OpenconfigVlanTypes_TPID_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigVlanTypes_TPID_TYPES. -func (e E_OpenconfigVlanTypes_TPID_TYPES) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlanTypes_TPID_TYPES") -} - -const ( - // OpenconfigVlanTypes_TPID_TYPES_UNSET corresponds to the value UNSET of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_UNSET E_OpenconfigVlanTypes_TPID_TYPES = 0 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 corresponds to the value TPID_0X9200 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 E_OpenconfigVlanTypes_TPID_TYPES = 1 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 corresponds to the value TPID_0x8100 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 E_OpenconfigVlanTypes_TPID_TYPES = 2 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 corresponds to the value TPID_0x8A88 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 E_OpenconfigVlanTypes_TPID_TYPES = 3 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 corresponds to the value TPID_0x9100 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 E_OpenconfigVlanTypes_TPID_TYPES = 4 -) - -// E_OpenconfigVlanTypes_VlanModeType is a derived int64 type which is used to represent -// the enumerated node OpenconfigVlanTypes_VlanModeType. An additional value named -// OpenconfigVlanTypes_VlanModeType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigVlanTypes_VlanModeType int64 - -// IsYANGGoEnum ensures that OpenconfigVlanTypes_VlanModeType implements the yang.GoEnum -// interface. This ensures that OpenconfigVlanTypes_VlanModeType can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigVlanTypes_VlanModeType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigVlanTypes_VlanModeType. -func (E_OpenconfigVlanTypes_VlanModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigVlanTypes_VlanModeType. -func (e E_OpenconfigVlanTypes_VlanModeType) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlanTypes_VlanModeType") -} - -const ( - // OpenconfigVlanTypes_VlanModeType_UNSET corresponds to the value UNSET of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_UNSET E_OpenconfigVlanTypes_VlanModeType = 0 - // OpenconfigVlanTypes_VlanModeType_ACCESS corresponds to the value ACCESS of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_ACCESS E_OpenconfigVlanTypes_VlanModeType = 1 - // OpenconfigVlanTypes_VlanModeType_TRUNK corresponds to the value TRUNK of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_TRUNK E_OpenconfigVlanTypes_VlanModeType = 2 -) - -// E_Vlan_Status is a derived int64 type which is used to represent -// the enumerated node Vlan_Status. An additional value named -// Vlan_Status_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Vlan_Status int64 - -// IsYANGGoEnum ensures that Vlan_Status implements the yang.GoEnum -// interface. This ensures that Vlan_Status can be identified as a -// mapped type for a YANG enumeration. -func (E_Vlan_Status) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Vlan_Status. -func (E_Vlan_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Vlan_Status. -func (e E_Vlan_Status) String() string { - return ygot.EnumLogString(e, int64(e), "E_Vlan_Status") -} - -const ( - // Vlan_Status_UNSET corresponds to the value UNSET of Vlan_Status - Vlan_Status_UNSET E_Vlan_Status = 0 - // Vlan_Status_ACTIVE corresponds to the value ACTIVE of Vlan_Status - Vlan_Status_ACTIVE E_Vlan_Status = 1 - // Vlan_Status_SUSPENDED corresponds to the value SUSPENDED of Vlan_Status - Vlan_Status_SUSPENDED E_Vlan_Status = 2 -) - -// ΛEnum is a map, keyed by the name of the type defined for each enum in the -// generated Go code, which provides a mapping between the constant int64 value -// of each value of the enumeration, and the string that is used to represent it -// in the YANG schema. The map is named ΛEnum in order to avoid clash with any -// valid YANG identifier. -var ΛEnum = map[string]map[int64]ygot.EnumDefinition{ - "E_Address_Status": { - 1: {Name: "PREFERRED"}, - 2: {Name: "DEPRECATED"}, - 3: {Name: "INVALID"}, - 4: {Name: "INACCESSIBLE"}, - 5: {Name: "UNKNOWN"}, - 6: {Name: "TENTATIVE"}, - 7: {Name: "DUPLICATE"}, - 8: {Name: "OPTIMISTIC"}, - }, - "E_Ethernet_DuplexMode": { - 1: {Name: "FULL"}, - 2: {Name: "HALF"}, - }, - "E_Ethernet_NegotiatedDuplexMode": { - 1: {Name: "FULL"}, - 2: {Name: "HALF"}, - }, - "E_IETFInterfaces_InterfaceType": { - 1: {Name: "a12MppSwitch", DefiningModule: "iana-if-type"}, - 2: {Name: "aal2", DefiningModule: "iana-if-type"}, - 3: {Name: "aal5", DefiningModule: "iana-if-type"}, - 4: {Name: "actelisMetaLOOP", DefiningModule: "iana-if-type"}, - 5: {Name: "adsl", DefiningModule: "iana-if-type"}, - 6: {Name: "adsl2", DefiningModule: "iana-if-type"}, - 7: {Name: "adsl2plus", DefiningModule: "iana-if-type"}, - 8: {Name: "aflane8023", DefiningModule: "iana-if-type"}, - 9: {Name: "aflane8025", DefiningModule: "iana-if-type"}, - 10: {Name: "aluELP", DefiningModule: "iana-if-type"}, - 11: {Name: "aluEpon", DefiningModule: "iana-if-type"}, - 12: {Name: "aluEponLogicalLink", DefiningModule: "iana-if-type"}, - 13: {Name: "aluEponOnu", DefiningModule: "iana-if-type"}, - 14: {Name: "aluEponPhysicalUni", DefiningModule: "iana-if-type"}, - 15: {Name: "aluGponOnu", DefiningModule: "iana-if-type"}, - 16: {Name: "aluGponPhysicalUni", DefiningModule: "iana-if-type"}, - 17: {Name: "arap", DefiningModule: "iana-if-type"}, - 18: {Name: "arcnet", DefiningModule: "iana-if-type"}, - 19: {Name: "arcnetPlus", DefiningModule: "iana-if-type"}, - 20: {Name: "async", DefiningModule: "iana-if-type"}, - 21: {Name: "atm", DefiningModule: "iana-if-type"}, - 22: {Name: "atmDxi", DefiningModule: "iana-if-type"}, - 23: {Name: "atmFuni", DefiningModule: "iana-if-type"}, - 24: {Name: "atmIma", DefiningModule: "iana-if-type"}, - 25: {Name: "atmLogical", DefiningModule: "iana-if-type"}, - 26: {Name: "atmRadio", DefiningModule: "iana-if-type"}, - 27: {Name: "atmSubInterface", DefiningModule: "iana-if-type"}, - 28: {Name: "atmVciEndPt", DefiningModule: "iana-if-type"}, - 29: {Name: "atmVirtual", DefiningModule: "iana-if-type"}, - 30: {Name: "atmbond", DefiningModule: "iana-if-type"}, - 31: {Name: "aviciOpticalEther", DefiningModule: "iana-if-type"}, - 32: {Name: "basicISDN", DefiningModule: "iana-if-type"}, - 33: {Name: "bgppolicyaccounting", DefiningModule: "iana-if-type"}, - 34: {Name: "bits", DefiningModule: "iana-if-type"}, - 35: {Name: "bridge", DefiningModule: "iana-if-type"}, - 36: {Name: "bsc", DefiningModule: "iana-if-type"}, - 37: {Name: "cableDownstreamRfPort", DefiningModule: "iana-if-type"}, - 38: {Name: "capwapDot11Bss", DefiningModule: "iana-if-type"}, - 39: {Name: "capwapDot11Profile", DefiningModule: "iana-if-type"}, - 40: {Name: "capwapWtpVirtualRadio", DefiningModule: "iana-if-type"}, - 41: {Name: "cblVectaStar", DefiningModule: "iana-if-type"}, - 42: {Name: "cctEmul", DefiningModule: "iana-if-type"}, - 43: {Name: "ces", DefiningModule: "iana-if-type"}, - 44: {Name: "channel", DefiningModule: "iana-if-type"}, - 45: {Name: "ciscoISLvlan", DefiningModule: "iana-if-type"}, - 46: {Name: "cnr", DefiningModule: "iana-if-type"}, - 47: {Name: "coffee", DefiningModule: "iana-if-type"}, - 48: {Name: "compositeLink", DefiningModule: "iana-if-type"}, - 49: {Name: "dcn", DefiningModule: "iana-if-type"}, - 50: {Name: "ddnX25", DefiningModule: "iana-if-type"}, - 51: {Name: "digitalPowerline", DefiningModule: "iana-if-type"}, - 52: {Name: "digitalWrapperOverheadChannel", DefiningModule: "iana-if-type"}, - 53: {Name: "dlsw", DefiningModule: "iana-if-type"}, - 54: {Name: "docsCableDownstream", DefiningModule: "iana-if-type"}, - 55: {Name: "docsCableMCmtsDownstream", DefiningModule: "iana-if-type"}, - 56: {Name: "docsCableMaclayer", DefiningModule: "iana-if-type"}, - 57: {Name: "docsCableUpstream", DefiningModule: "iana-if-type"}, - 58: {Name: "docsCableUpstreamChannel", DefiningModule: "iana-if-type"}, - 59: {Name: "docsCableUpstreamRfPort", DefiningModule: "iana-if-type"}, - 60: {Name: "ds0", DefiningModule: "iana-if-type"}, - 61: {Name: "ds0Bundle", DefiningModule: "iana-if-type"}, - 62: {Name: "ds1", DefiningModule: "iana-if-type"}, - 63: {Name: "ds1FDL", DefiningModule: "iana-if-type"}, - 64: {Name: "ds3", DefiningModule: "iana-if-type"}, - 65: {Name: "dtm", DefiningModule: "iana-if-type"}, - 66: {Name: "dvbAsiIn", DefiningModule: "iana-if-type"}, - 67: {Name: "dvbAsiOut", DefiningModule: "iana-if-type"}, - 68: {Name: "dvbRccDownstream", DefiningModule: "iana-if-type"}, - 69: {Name: "dvbRccMacLayer", DefiningModule: "iana-if-type"}, - 70: {Name: "dvbRccUpstream", DefiningModule: "iana-if-type"}, - 71: {Name: "dvbRcsMacLayer", DefiningModule: "iana-if-type"}, - 72: {Name: "dvbRcsTdma", DefiningModule: "iana-if-type"}, - 73: {Name: "dvbTdm", DefiningModule: "iana-if-type"}, - 74: {Name: "e1", DefiningModule: "iana-if-type"}, - 75: {Name: "econet", DefiningModule: "iana-if-type"}, - 76: {Name: "eon", DefiningModule: "iana-if-type"}, - 77: {Name: "eplrs", DefiningModule: "iana-if-type"}, - 78: {Name: "escon", DefiningModule: "iana-if-type"}, - 79: {Name: "ethernet3Mbit", DefiningModule: "iana-if-type"}, - 80: {Name: "ethernetCsmacd", DefiningModule: "iana-if-type"}, - 81: {Name: "fast", DefiningModule: "iana-if-type"}, - 82: {Name: "fastEther", DefiningModule: "iana-if-type"}, - 83: {Name: "fastEtherFX", DefiningModule: "iana-if-type"}, - 84: {Name: "fcipLink", DefiningModule: "iana-if-type"}, - 85: {Name: "fddi", DefiningModule: "iana-if-type"}, - 86: {Name: "fibreChannel", DefiningModule: "iana-if-type"}, - 87: {Name: "frDlciEndPt", DefiningModule: "iana-if-type"}, - 88: {Name: "frForward", DefiningModule: "iana-if-type"}, - 89: {Name: "frameRelay", DefiningModule: "iana-if-type"}, - 90: {Name: "frameRelayInterconnect", DefiningModule: "iana-if-type"}, - 91: {Name: "frameRelayMPI", DefiningModule: "iana-if-type"}, - 92: {Name: "frameRelayService", DefiningModule: "iana-if-type"}, - 93: {Name: "frf16MfrBundle", DefiningModule: "iana-if-type"}, - 94: {Name: "g703at2mb", DefiningModule: "iana-if-type"}, - 95: {Name: "g703at64k", DefiningModule: "iana-if-type"}, - 96: {Name: "g9981", DefiningModule: "iana-if-type"}, - 97: {Name: "g9982", DefiningModule: "iana-if-type"}, - 98: {Name: "g9983", DefiningModule: "iana-if-type"}, - 99: {Name: "gfp", DefiningModule: "iana-if-type"}, - 100: {Name: "gigabitEthernet", DefiningModule: "iana-if-type"}, - 101: {Name: "gpon", DefiningModule: "iana-if-type"}, - 102: {Name: "gr303IDT", DefiningModule: "iana-if-type"}, - 103: {Name: "gr303RDT", DefiningModule: "iana-if-type"}, - 104: {Name: "gtp", DefiningModule: "iana-if-type"}, - 105: {Name: "h323Gatekeeper", DefiningModule: "iana-if-type"}, - 106: {Name: "h323Proxy", DefiningModule: "iana-if-type"}, - 107: {Name: "hdh1822", DefiningModule: "iana-if-type"}, - 108: {Name: "hdlc", DefiningModule: "iana-if-type"}, - 109: {Name: "hdsl2", DefiningModule: "iana-if-type"}, - 110: {Name: "hiperlan2", DefiningModule: "iana-if-type"}, - 111: {Name: "hippi", DefiningModule: "iana-if-type"}, - 112: {Name: "hippiInterface", DefiningModule: "iana-if-type"}, - 113: {Name: "homepna", DefiningModule: "iana-if-type"}, - 114: {Name: "hostPad", DefiningModule: "iana-if-type"}, - 115: {Name: "hssi", DefiningModule: "iana-if-type"}, - 116: {Name: "hyperchannel", DefiningModule: "iana-if-type"}, - 117: {Name: "iana-interface-type", DefiningModule: "iana-if-type"}, - 118: {Name: "ibm370parChan", DefiningModule: "iana-if-type"}, - 119: {Name: "idsl", DefiningModule: "iana-if-type"}, - 120: {Name: "ieee1394", DefiningModule: "iana-if-type"}, - 121: {Name: "ieee80211", DefiningModule: "iana-if-type"}, - 122: {Name: "ieee80212", DefiningModule: "iana-if-type"}, - 123: {Name: "ieee802154", DefiningModule: "iana-if-type"}, - 124: {Name: "ieee80216WMAN", DefiningModule: "iana-if-type"}, - 125: {Name: "ieee8023adLag", DefiningModule: "iana-if-type"}, - 126: {Name: "if-gsn", DefiningModule: "iana-if-type"}, - 127: {Name: "ifPwType", DefiningModule: "iana-if-type"}, - 128: {Name: "ifVfiType", DefiningModule: "iana-if-type"}, - 129: {Name: "ilan", DefiningModule: "iana-if-type"}, - 130: {Name: "imt", DefiningModule: "iana-if-type"}, - 131: {Name: "infiniband", DefiningModule: "iana-if-type"}, - 132: {Name: "interleave", DefiningModule: "iana-if-type"}, - 133: {Name: "ip", DefiningModule: "iana-if-type"}, - 134: {Name: "ipForward", DefiningModule: "iana-if-type"}, - 135: {Name: "ipOverAtm", DefiningModule: "iana-if-type"}, - 136: {Name: "ipOverCdlc", DefiningModule: "iana-if-type"}, - 137: {Name: "ipOverClaw", DefiningModule: "iana-if-type"}, - 138: {Name: "ipSwitch", DefiningModule: "iana-if-type"}, - 139: {Name: "isdn", DefiningModule: "iana-if-type"}, - 140: {Name: "isdns", DefiningModule: "iana-if-type"}, - 141: {Name: "isdnu", DefiningModule: "iana-if-type"}, - 142: {Name: "iso88022llc", DefiningModule: "iana-if-type"}, - 143: {Name: "iso88023Csmacd", DefiningModule: "iana-if-type"}, - 144: {Name: "iso88024TokenBus", DefiningModule: "iana-if-type"}, - 145: {Name: "iso88025CRFPInt", DefiningModule: "iana-if-type"}, - 146: {Name: "iso88025Dtr", DefiningModule: "iana-if-type"}, - 147: {Name: "iso88025Fiber", DefiningModule: "iana-if-type"}, - 148: {Name: "iso88025TokenRing", DefiningModule: "iana-if-type"}, - 149: {Name: "iso88026Man", DefiningModule: "iana-if-type"}, - 150: {Name: "isup", DefiningModule: "iana-if-type"}, - 151: {Name: "l2vlan", DefiningModule: "iana-if-type"}, - 152: {Name: "l3ipvlan", DefiningModule: "iana-if-type"}, - 153: {Name: "l3ipxvlan", DefiningModule: "iana-if-type"}, - 154: {Name: "lapb", DefiningModule: "iana-if-type"}, - 155: {Name: "lapd", DefiningModule: "iana-if-type"}, - 156: {Name: "lapf", DefiningModule: "iana-if-type"}, - 157: {Name: "linegroup", DefiningModule: "iana-if-type"}, - 158: {Name: "lmp", DefiningModule: "iana-if-type"}, - 159: {Name: "localTalk", DefiningModule: "iana-if-type"}, - 160: {Name: "macSecControlledIF", DefiningModule: "iana-if-type"}, - 161: {Name: "macSecUncontrolledIF", DefiningModule: "iana-if-type"}, - 162: {Name: "mediaMailOverIp", DefiningModule: "iana-if-type"}, - 163: {Name: "mfSigLink", DefiningModule: "iana-if-type"}, - 164: {Name: "miox25", DefiningModule: "iana-if-type"}, - 165: {Name: "mocaVersion1", DefiningModule: "iana-if-type"}, - 166: {Name: "modem", DefiningModule: "iana-if-type"}, - 167: {Name: "mpc", DefiningModule: "iana-if-type"}, - 168: {Name: "mpegTransport", DefiningModule: "iana-if-type"}, - 169: {Name: "mpls", DefiningModule: "iana-if-type"}, - 170: {Name: "mplsTunnel", DefiningModule: "iana-if-type"}, - 171: {Name: "msdsl", DefiningModule: "iana-if-type"}, - 172: {Name: "mvl", DefiningModule: "iana-if-type"}, - 173: {Name: "myrinet", DefiningModule: "iana-if-type"}, - 174: {Name: "nfas", DefiningModule: "iana-if-type"}, - 175: {Name: "nsip", DefiningModule: "iana-if-type"}, - 176: {Name: "opticalChannel", DefiningModule: "iana-if-type"}, - 177: {Name: "opticalChannelGroup", DefiningModule: "iana-if-type"}, - 178: {Name: "opticalTransport", DefiningModule: "iana-if-type"}, - 179: {Name: "other", DefiningModule: "iana-if-type"}, - 180: {Name: "otnOdu", DefiningModule: "iana-if-type"}, - 181: {Name: "otnOtu", DefiningModule: "iana-if-type"}, - 182: {Name: "para", DefiningModule: "iana-if-type"}, - 183: {Name: "pdnEtherLoop1", DefiningModule: "iana-if-type"}, - 184: {Name: "pdnEtherLoop2", DefiningModule: "iana-if-type"}, - 185: {Name: "pip", DefiningModule: "iana-if-type"}, - 186: {Name: "plc", DefiningModule: "iana-if-type"}, - 187: {Name: "pon155", DefiningModule: "iana-if-type"}, - 188: {Name: "pon622", DefiningModule: "iana-if-type"}, - 189: {Name: "pos", DefiningModule: "iana-if-type"}, - 190: {Name: "ppp", DefiningModule: "iana-if-type"}, - 191: {Name: "pppMultilinkBundle", DefiningModule: "iana-if-type"}, - 192: {Name: "primaryISDN", DefiningModule: "iana-if-type"}, - 193: {Name: "propAtm", DefiningModule: "iana-if-type"}, - 194: {Name: "propBWAp2Mp", DefiningModule: "iana-if-type"}, - 195: {Name: "propCnls", DefiningModule: "iana-if-type"}, - 196: {Name: "propDocsWirelessDownstream", DefiningModule: "iana-if-type"}, - 197: {Name: "propDocsWirelessMaclayer", DefiningModule: "iana-if-type"}, - 198: {Name: "propDocsWirelessUpstream", DefiningModule: "iana-if-type"}, - 199: {Name: "propMultiplexor", DefiningModule: "iana-if-type"}, - 200: {Name: "propPointToPointSerial", DefiningModule: "iana-if-type"}, - 201: {Name: "propVirtual", DefiningModule: "iana-if-type"}, - 202: {Name: "propWirelessP2P", DefiningModule: "iana-if-type"}, - 203: {Name: "proteon10Mbit", DefiningModule: "iana-if-type"}, - 204: {Name: "proteon80Mbit", DefiningModule: "iana-if-type"}, - 205: {Name: "q2931", DefiningModule: "iana-if-type"}, - 206: {Name: "qam", DefiningModule: "iana-if-type"}, - 207: {Name: "qllc", DefiningModule: "iana-if-type"}, - 208: {Name: "radioMAC", DefiningModule: "iana-if-type"}, - 209: {Name: "radsl", DefiningModule: "iana-if-type"}, - 210: {Name: "reachDSL", DefiningModule: "iana-if-type"}, - 211: {Name: "regular1822", DefiningModule: "iana-if-type"}, - 212: {Name: "rfc1483", DefiningModule: "iana-if-type"}, - 213: {Name: "rfc877x25", DefiningModule: "iana-if-type"}, - 214: {Name: "rpr", DefiningModule: "iana-if-type"}, - 215: {Name: "rs232", DefiningModule: "iana-if-type"}, - 216: {Name: "rsrb", DefiningModule: "iana-if-type"}, - 217: {Name: "sdlc", DefiningModule: "iana-if-type"}, - 218: {Name: "sdsl", DefiningModule: "iana-if-type"}, - 219: {Name: "shdsl", DefiningModule: "iana-if-type"}, - 220: {Name: "sip", DefiningModule: "iana-if-type"}, - 221: {Name: "sipSig", DefiningModule: "iana-if-type"}, - 222: {Name: "sipTg", DefiningModule: "iana-if-type"}, - 223: {Name: "sixToFour", DefiningModule: "iana-if-type"}, - 224: {Name: "slip", DefiningModule: "iana-if-type"}, - 225: {Name: "smdsDxi", DefiningModule: "iana-if-type"}, - 226: {Name: "smdsIcip", DefiningModule: "iana-if-type"}, - 227: {Name: "softwareLoopback", DefiningModule: "iana-if-type"}, - 228: {Name: "sonet", DefiningModule: "iana-if-type"}, - 229: {Name: "sonetOverheadChannel", DefiningModule: "iana-if-type"}, - 230: {Name: "sonetPath", DefiningModule: "iana-if-type"}, - 231: {Name: "sonetVT", DefiningModule: "iana-if-type"}, - 232: {Name: "srp", DefiningModule: "iana-if-type"}, - 233: {Name: "ss7SigLink", DefiningModule: "iana-if-type"}, - 234: {Name: "stackToStack", DefiningModule: "iana-if-type"}, - 235: {Name: "starLan", DefiningModule: "iana-if-type"}, - 236: {Name: "tdlc", DefiningModule: "iana-if-type"}, - 237: {Name: "teLink", DefiningModule: "iana-if-type"}, - 238: {Name: "termPad", DefiningModule: "iana-if-type"}, - 239: {Name: "tr008", DefiningModule: "iana-if-type"}, - 240: {Name: "transpHdlc", DefiningModule: "iana-if-type"}, - 241: {Name: "tunnel", DefiningModule: "iana-if-type"}, - 242: {Name: "ultra", DefiningModule: "iana-if-type"}, - 243: {Name: "usb", DefiningModule: "iana-if-type"}, - 244: {Name: "v11", DefiningModule: "iana-if-type"}, - 245: {Name: "v35", DefiningModule: "iana-if-type"}, - 246: {Name: "v36", DefiningModule: "iana-if-type"}, - 247: {Name: "v37", DefiningModule: "iana-if-type"}, - 248: {Name: "vdsl", DefiningModule: "iana-if-type"}, - 249: {Name: "vdsl2", DefiningModule: "iana-if-type"}, - 250: {Name: "virtualIpAddress", DefiningModule: "iana-if-type"}, - 251: {Name: "virtualTg", DefiningModule: "iana-if-type"}, - 252: {Name: "vmwareNicTeam", DefiningModule: "iana-if-type"}, - 253: {Name: "vmwareVirtualNic", DefiningModule: "iana-if-type"}, - 254: {Name: "voiceDID", DefiningModule: "iana-if-type"}, - 255: {Name: "voiceEBS", DefiningModule: "iana-if-type"}, - 256: {Name: "voiceEM", DefiningModule: "iana-if-type"}, - 257: {Name: "voiceEMFGD", DefiningModule: "iana-if-type"}, - 258: {Name: "voiceEncap", DefiningModule: "iana-if-type"}, - 259: {Name: "voiceFGDEANA", DefiningModule: "iana-if-type"}, - 260: {Name: "voiceFGDOS", DefiningModule: "iana-if-type"}, - 261: {Name: "voiceFXO", DefiningModule: "iana-if-type"}, - 262: {Name: "voiceFXS", DefiningModule: "iana-if-type"}, - 263: {Name: "voiceOverAtm", DefiningModule: "iana-if-type"}, - 264: {Name: "voiceOverCable", DefiningModule: "iana-if-type"}, - 265: {Name: "voiceOverFrameRelay", DefiningModule: "iana-if-type"}, - 266: {Name: "voiceOverIp", DefiningModule: "iana-if-type"}, - 267: {Name: "wwanPP", DefiningModule: "iana-if-type"}, - 268: {Name: "wwanPP2", DefiningModule: "iana-if-type"}, - 269: {Name: "x213", DefiningModule: "iana-if-type"}, - 270: {Name: "x25huntGroup", DefiningModule: "iana-if-type"}, - 271: {Name: "x25mlp", DefiningModule: "iana-if-type"}, - 272: {Name: "x25ple", DefiningModule: "iana-if-type"}, - 273: {Name: "x86Laps", DefiningModule: "iana-if-type"}, - }, - "E_Interface_AdminStatus": { - 1: {Name: "UP"}, - 2: {Name: "DOWN"}, - 3: {Name: "TESTING"}, - }, - "E_Interface_OperStatus": { - 1: {Name: "UP"}, - 2: {Name: "DOWN"}, - 3: {Name: "TESTING"}, - 4: {Name: "UNKNOWN"}, - 5: {Name: "DORMANT"}, - 6: {Name: "NOT_PRESENT"}, - 7: {Name: "LOWER_LAYER_DOWN"}, - }, - "E_Neighbor_NeighborState": { - 1: {Name: "INCOMPLETE"}, - 2: {Name: "REACHABLE"}, - 3: {Name: "STALE"}, - 4: {Name: "DELAY"}, - 5: {Name: "PROBE"}, - }, - "E_OpenconfigIfAggregate_AggregationType": { - 1: {Name: "LACP"}, - 2: {Name: "STATIC"}, - }, - "E_OpenconfigIfEthernet_ETHERNET_SPEED": { - 1: {Name: "SPEED_100GB", DefiningModule: "openconfig-if-ethernet"}, - 2: {Name: "SPEED_100MB", DefiningModule: "openconfig-if-ethernet"}, - 3: {Name: "SPEED_10GB", DefiningModule: "openconfig-if-ethernet"}, - 4: {Name: "SPEED_10MB", DefiningModule: "openconfig-if-ethernet"}, - 5: {Name: "SPEED_1GB", DefiningModule: "openconfig-if-ethernet"}, - 6: {Name: "SPEED_25GB", DefiningModule: "openconfig-if-ethernet"}, - 7: {Name: "SPEED_40GB", DefiningModule: "openconfig-if-ethernet"}, - 8: {Name: "SPEED_50GB", DefiningModule: "openconfig-if-ethernet"}, - 9: {Name: "SPEED_UNKNOWN", DefiningModule: "openconfig-if-ethernet"}, - }, - "E_OpenconfigIfIp_IpAddressOrigin": { - 1: {Name: "OTHER"}, - 2: {Name: "STATIC"}, - 3: {Name: "DHCP"}, - 4: {Name: "LINK_LAYER"}, - 5: {Name: "RANDOM"}, - }, - "E_OpenconfigIfIp_NeighborOrigin": { - 1: {Name: "OTHER"}, - 2: {Name: "STATIC"}, - 3: {Name: "DYNAMIC"}, - }, - "E_OpenconfigVlanTypes_TPID_TYPES": { - 1: {Name: "TPID_0X9200", DefiningModule: "openconfig-vlan-types"}, - 2: {Name: "TPID_0x8100", DefiningModule: "openconfig-vlan-types"}, - 3: {Name: "TPID_0x8A88", DefiningModule: "openconfig-vlan-types"}, - 4: {Name: "TPID_0x9100", DefiningModule: "openconfig-vlan-types"}, - }, - "E_OpenconfigVlanTypes_VlanModeType": { - 1: {Name: "ACCESS"}, - 2: {Name: "TRUNK"}, - }, - "E_Vlan_Status": { - 1: {Name: "ACTIVE"}, - 2: {Name: "SUSPENDED"}, - }, -} - -var ( - // ySchema is a byte slice contain a gzip compressed representation of the - // YANG schema from which the Go code was generated. When uncompressed the - // contents of the byte slice is a JSON document containing an object, keyed - // on the name of the generated struct, and containing the JSON marshalled - // contents of a goyang yang.Entry struct, which defines the schema for the - // fields within the struct. - ySchema = []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x6b, 0x53, 0xdb, 0xc8, - 0xd6, 0x3e, 0x0e, 0xbf, 0xcf, 0xa7, 0x50, 0xb9, 0x6a, 0xd7, 0x86, 0xd9, 0x31, 0xf1, 0x19, 0x70, - 0xd5, 0x5d, 0x53, 0x84, 0x43, 0x86, 0xda, 0x10, 0x5c, 0xc0, 0x64, 0xe6, 0xf7, 0x04, 0xee, 0x54, - 0x5b, 0x6a, 0xd9, 0xfd, 0x44, 0x6a, 0x69, 0xba, 0x5b, 0x1c, 0xee, 0x84, 0xef, 0xfe, 0x2f, 0xc9, - 0xb6, 0x30, 0x18, 0x82, 0x25, 0x75, 0xcb, 0x5e, 0xf6, 0xca, 0x8b, 0xc4, 0x10, 0xab, 0x25, 0xf5, - 0x61, 0xad, 0x6b, 0x5d, 0xeb, 0xf4, 0xe3, 0x9d, 0x65, 0x59, 0x56, 0xe5, 0x33, 0xf1, 0x69, 0xa5, - 0x6b, 0x55, 0x1c, 0x7a, 0xc3, 0x6c, 0x5a, 0x79, 0x3f, 0xfa, 0xed, 0x7f, 0x19, 0x77, 0x2a, 0x5d, - 0xab, 0x3e, 0xfe, 0x71, 0x3f, 0xe0, 0x2e, 0x1b, 0x54, 0xba, 0x56, 0x6d, 0xfc, 0x8b, 0x03, 0x26, - 0x2a, 0x5d, 0x6b, 0x34, 0x44, 0xf2, 0x0b, 0xc6, 0x15, 0x15, 0x2e, 0xb1, 0xa9, 0x7c, 0xf2, 0xfb, - 0x27, 0xb7, 0x98, 0xfa, 0xce, 0xfb, 0xa7, 0xdf, 0x78, 0x7a, 0xbb, 0xf4, 0xd7, 0xcf, 0x6f, 0x9b, - 0xfe, 0x47, 0x4f, 0x50, 0x97, 0xdd, 0xcd, 0xdc, 0xe9, 0xc9, 0xdd, 0x02, 0xbb, 0xca, 0xdc, 0x67, - 0x37, 0x4a, 0xbe, 0x70, 0x11, 0x44, 0xc2, 0xa6, 0x2f, 0x5e, 0x3c, 0x7a, 0x18, 0x7a, 0x7f, 0x1b, - 0x88, 0xf8, 0x79, 0x2a, 0xe1, 0xe8, 0x3e, 0xef, 0x5f, 0xfe, 0xe2, 0x1f, 0x44, 0xee, 0x89, 0x41, - 0xe4, 0x53, 0xae, 0x2a, 0x5d, 0x4b, 0x89, 0x88, 0xbe, 0xf2, 0xc5, 0xa9, 0x6f, 0x8d, 0x1f, 0x6b, - 0xe6, 0x7b, 0x0f, 0x4f, 0x7e, 0xf3, 0xf0, 0xec, 0x7d, 0x9f, 0x4f, 0xf7, 0xec, 0xb4, 0xbf, 0xfe, - 0x3a, 0x33, 0xb3, 0xff, 0xda, 0xeb, 0xbc, 0xbc, 0x08, 0x6f, 0x2e, 0xc6, 0x3c, 0x8b, 0x32, 0xf7, - 0xe2, 0xcc, 0xbb, 0x48, 0x99, 0x17, 0x2b, 0xf3, 0xa2, 0x65, 0x59, 0xbc, 0x97, 0x17, 0xf1, 0x95, - 0xc5, 0x7c, 0x73, 0x51, 0xd3, 0x2f, 0x90, 0xc1, 0x40, 0xd0, 0x01, 0x51, 0x2c, 0xe0, 0x6f, 0x4f, - 0xc4, 0x64, 0x66, 0xa7, 0x2f, 0x7a, 0xe3, 0xcd, 0x7e, 0xbd, 0xe0, 0x73, 0x2f, 0x7c, 0x96, 0x0d, - 0xf0, 0xd2, 0x46, 0xf0, 0xc8, 0xe0, 0x8d, 0x27, 0xcd, 0xb2, 0x23, 0x72, 0xef, 0x8c, 0xdc, 0x3b, - 0xe4, 0xb5, 0x9d, 0x12, 0xbf, 0xd7, 0x9b, 0x17, 0x3e, 0xfc, 0xf2, 0x1b, 0x0f, 0x6f, 0xcc, 0xf8, - 0x5b, 0x5b, 0x28, 0xfd, 0xa2, 0x3d, 0x59, 0xc3, 0x39, 0x27, 0x6f, 0xb2, 0x3c, 0xe3, 0xeb, 0xe6, - 0x9c, 0x80, 0xf9, 0x36, 0x54, 0xe6, 0x8d, 0x95, 0x67, 0x83, 0xe5, 0xdf, 0x68, 0x79, 0x37, 0x5c, - 0xe1, 0x8d, 0x57, 0x78, 0x03, 0x16, 0xda, 0x88, 0xf3, 0x6d, 0xc8, 0x39, 0x37, 0x66, 0xe6, 0x0d, - 0x9a, 0x5e, 0xe0, 0x91, 0x41, 0x55, 0xdd, 0x87, 0x39, 0xa6, 0x7d, 0xb2, 0xd0, 0xe9, 0x08, 0x19, - 0x27, 0x6d, 0xbc, 0x79, 0x6b, 0x19, 0x2f, 0xcb, 0xba, 0x89, 0x8b, 0x6c, 0xe6, 0xe2, 0x9b, 0xba, - 0xe8, 0xe6, 0xd6, 0xb6, 0xc9, 0xb5, 0x6d, 0x76, 0x2d, 0x9b, 0x3e, 0xdb, 0xe6, 0xcf, 0x78, 0x08, - 0xd2, 0x27, 0xbc, 0xcc, 0xb3, 0xaf, 0x5f, 0x53, 0xee, 0x79, 0xf6, 0xf8, 0x13, 0x21, 0xdd, 0xca, - 0x71, 0xed, 0x21, 0x8f, 0xfc, 0xf8, 0x0d, 0xcc, 0xce, 0xd3, 0x1e, 0xe7, 0x81, 0x9a, 0x0f, 0xf6, - 0xbc, 0x78, 0xfd, 0xfd, 0x20, 0x50, 0xd5, 0xc0, 0xae, 0xda, 0x81, 0x1f, 0x0a, 0x2a, 0x25, 0x75, - 0xaa, 0x1e, 0x25, 0x6e, 0x8e, 0x07, 0x7f, 0x67, 0xe0, 0x15, 0x2b, 0x3e, 0xe3, 0x55, 0x8f, 0xf1, - 0xef, 0x32, 0xbf, 0x8c, 0x7b, 0x1c, 0x02, 0x85, 0x1c, 0x0a, 0xb9, 0x15, 0x13, 0x72, 0x11, 0xe3, - 0xaa, 0xde, 0x29, 0x20, 0xda, 0x3a, 0x39, 0x2e, 0x3d, 0x27, 0x7c, 0x10, 0xdf, 0xfd, 0x6b, 0xae, - 0x75, 0xc9, 0xb7, 0xbf, 0x92, 0x1b, 0x9f, 0x32, 0x9e, 0x7b, 0x83, 0xa6, 0x83, 0x7c, 0x21, 0x5e, - 0x44, 0xb3, 0x1f, 0xcf, 0x99, 0x71, 0x8e, 0x04, 0xb1, 0x63, 0xb9, 0x7b, 0xc0, 0x06, 0x4c, 0x49, - 0x0d, 0x03, 0x7e, 0x4e, 0xb4, 0xd5, 0x4d, 0xfc, 0x6c, 0x2e, 0xf1, 0x24, 0xcd, 0x3d, 0xda, 0xc3, - 0xfb, 0x02, 0x53, 0x4c, 0xee, 0xf4, 0x4d, 0x71, 0xa7, 0xdd, 0x6e, 0xb6, 0x57, 0x77, 0x9a, 0xdf, - 0x95, 0x73, 0xd5, 0x35, 0x02, 0x08, 0x93, 0x66, 0x57, 0xce, 0x09, 0xa8, 0x48, 0x7b, 0x48, 0x7d, - 0x12, 0x12, 0x35, 0x8c, 0x05, 0xf1, 0x87, 0x20, 0xa4, 0x7c, 0xc4, 0x00, 0x54, 0x1f, 0xb9, 0xdb, - 0x0f, 0x2f, 0x7d, 0xfc, 0x30, 0x85, 0x4c, 0x3f, 0x8c, 0x49, 0x83, 0x77, 0x7a, 0xde, 0x7b, 0x8e, - 0x77, 0xae, 0x48, 0x45, 0x14, 0xcd, 0xce, 0x6e, 0x8c, 0x2e, 0x33, 0x4c, 0x6e, 0x34, 0x90, 0xdc, - 0x40, 0x72, 0xe3, 0x91, 0xdc, 0x90, 0x21, 0xa5, 0x4e, 0x31, 0x76, 0x63, 0x34, 0x04, 0x22, 0x7f, - 0x44, 0xfe, 0x2b, 0x88, 0xfc, 0x9b, 0x8d, 0x02, 0xc8, 0x7f, 0x1b, 0x91, 0x3f, 0x22, 0x7f, 0x53, - 0xc8, 0xbf, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, 0x1b, 0xbb, 0x08, 0xff, 0x4b, 0x86, 0xff, 0x46, - 0x68, 0x38, 0xf4, 0x34, 0xa0, 0x2a, 0x46, 0x55, 0xfc, 0xda, 0x7a, 0x03, 0xf5, 0x34, 0x98, 0x21, - 0xec, 0xa9, 0xdf, 0xa7, 0xa2, 0x00, 0x5b, 0x3f, 0xba, 0x1e, 0xa5, 0x04, 0x4a, 0x89, 0x15, 0x93, - 0x12, 0x7d, 0x22, 0xe9, 0x23, 0x35, 0x54, 0x15, 0xd4, 0x2d, 0x22, 0x27, 0xf2, 0xa0, 0xf7, 0x5e, - 0xca, 0x55, 0xd9, 0x55, 0xe6, 0x76, 0xa7, 0xb8, 0xa9, 0x67, 0xbf, 0x18, 0xff, 0xcc, 0xe3, 0x27, - 0x37, 0x3a, 0xab, 0x27, 0x4c, 0xaa, 0x3d, 0xa5, 0x44, 0xbe, 0x99, 0x3d, 0x65, 0xfc, 0xd0, 0xa3, - 0xf1, 0xbe, 0xc9, 0x09, 0x0c, 0x63, 0xcc, 0x3b, 0x35, 0x42, 0x7d, 0xa7, 0xd5, 0xea, 0x6c, 0xb7, - 0x5a, 0xb5, 0xed, 0xe6, 0x76, 0x6d, 0xb7, 0xdd, 0xae, 0x77, 0xea, 0x39, 0xe0, 0x6b, 0xe5, 0x4c, - 0x38, 0x54, 0x50, 0xe7, 0xe3, 0x7d, 0xa5, 0x6b, 0xf1, 0xc8, 0xf3, 0x8c, 0xce, 0x20, 0xbd, 0x53, - 0x82, 0x54, 0x23, 0x2e, 0x15, 0xe9, 0x7b, 0x39, 0x77, 0xe8, 0xed, 0x90, 0xf2, 0x45, 0x18, 0x75, - 0x4f, 0x25, 0x61, 0x77, 0x02, 0x11, 0xad, 0xff, 0xb1, 0xfe, 0x7d, 0x71, 0xb9, 0x77, 0x79, 0xbc, - 0xff, 0xef, 0x4a, 0x01, 0x7b, 0xa6, 0xa0, 0x94, 0x7c, 0x49, 0x5a, 0x26, 0x13, 0x55, 0xd0, 0xfe, - 0xd0, 0x25, 0x33, 0x7f, 0x21, 0x3b, 0x5f, 0x9c, 0xc9, 0x85, 0xd8, 0x94, 0x07, 0x54, 0xda, 0x82, - 0x85, 0xb9, 0xbd, 0x0b, 0x2f, 0x6e, 0x97, 0xcb, 0x21, 0xb5, 0x24, 0xf3, 0x43, 0x8f, 0x5a, 0x1e, - 0x93, 0xca, 0x0a, 0x5c, 0x6b, 0x84, 0x1a, 0xac, 0x47, 0x89, 0x66, 0x31, 0x69, 0xc5, 0x86, 0xe3, - 0x0d, 0xbd, 0xe2, 0xf1, 0xaa, 0x59, 0x6a, 0x48, 0xad, 0x09, 0x4e, 0xa3, 0xf1, 0xff, 0x4a, 0x45, - 0x14, 0xb3, 0x89, 0xe7, 0xdd, 0x5b, 0x23, 0x0e, 0x3e, 0x12, 0x99, 0x89, 0x42, 0x53, 0x7b, 0xee, - 0xf9, 0xbe, 0x73, 0xa6, 0xa6, 0xf1, 0x7d, 0xf1, 0x91, 0x75, 0x6f, 0xc1, 0x99, 0x6d, 0x68, 0x72, - 0x85, 0x0a, 0x3d, 0xe9, 0x03, 0x5a, 0xfb, 0xf3, 0x60, 0x78, 0x0c, 0xba, 0x41, 0x24, 0x8f, 0x48, - 0xfe, 0xd5, 0xf5, 0xc6, 0xa0, 0x9b, 0xdc, 0xbc, 0x30, 0x52, 0xef, 0xaf, 0x98, 0x21, 0x18, 0x74, - 0xb3, 0x26, 0x7a, 0x78, 0x85, 0x62, 0x57, 0x46, 0x21, 0x21, 0x65, 0x86, 0xae, 0xdc, 0x32, 0x65, - 0x0f, 0xa9, 0x53, 0xbd, 0xf1, 0x08, 0xcf, 0x11, 0xc2, 0xf2, 0xe4, 0xf2, 0xd5, 0xc8, 0xd3, 0xc9, - 0xf0, 0x2a, 0xd6, 0x4a, 0xc5, 0xb2, 0x24, 0x2f, 0x0e, 0x25, 0x98, 0x25, 0x63, 0x4a, 0xd9, 0xcc, - 0x42, 0x67, 0x4a, 0x2d, 0xcb, 0xb9, 0x75, 0x97, 0x06, 0x4b, 0x67, 0xdc, 0xd2, 0xeb, 0x03, 0xa6, - 0xb3, 0x6d, 0xf9, 0x72, 0xd0, 0x74, 0xd6, 0xa3, 0x90, 0x5e, 0x48, 0x6c, 0x9b, 0x4a, 0x99, 0x4d, - 0x92, 0xbf, 0xba, 0x6b, 0xa6, 0x07, 0xcb, 0x39, 0xd7, 0xf9, 0x0c, 0xcf, 0xc2, 0x87, 0x46, 0xc7, - 0xe1, 0xd1, 0x78, 0x88, 0x4c, 0xb2, 0xa7, 0x85, 0x0e, 0x55, 0x69, 0xfc, 0x69, 0xbe, 0x43, 0x56, - 0x10, 0x9e, 0xe6, 0xdc, 0x33, 0xb9, 0x4d, 0xd9, 0x59, 0x93, 0x96, 0x17, 0xe3, 0x16, 0x53, 0x5d, - 0xb3, 0x5b, 0x60, 0x8c, 0xf1, 0xeb, 0x7c, 0x2d, 0xb4, 0x9e, 0x1a, 0x98, 0xd7, 0xc9, 0xa4, 0xc4, - 0x5b, 0xa1, 0xca, 0x1c, 0x1d, 0x94, 0x6b, 0x7e, 0xc3, 0x5f, 0x33, 0x11, 0xa0, 0x7f, 0xba, 0xb4, - 0x12, 0x05, 0xaf, 0x5a, 0xb5, 0xf5, 0xf7, 0x7a, 0xc7, 0xd5, 0x6d, 0xe1, 0x9a, 0xb3, 0x78, 0x35, - 0x12, 0x0d, 0x46, 0x88, 0x87, 0x57, 0x97, 0xac, 0x55, 0xdb, 0x6d, 0xe1, 0xaa, 0x15, 0x52, 0x0c, - 0xfa, 0x47, 0xb9, 0x7e, 0xb7, 0xc0, 0xbd, 0xa7, 0x51, 0x36, 0xff, 0xc3, 0xf8, 0x3f, 0x7a, 0x65, - 0x73, 0x7d, 0x47, 0xc3, 0x58, 0x3d, 0xa2, 0x14, 0x15, 0x5c, 0x9b, 0x78, 0xae, 0x6c, 0xb4, 0x6a, - 0xbb, 0x5f, 0x6b, 0xd5, 0xd6, 0xf5, 0xcf, 0x56, 0xed, 0x6b, 0xad, 0xba, 0x73, 0xfd, 0xb5, 0x56, - 0xdd, 0xbd, 0xfe, 0xf9, 0xb5, 0x5e, 0x6d, 0x8e, 0x3e, 0xfe, 0x68, 0x3e, 0xc4, 0x3f, 0xed, 0x8e, - 0x7f, 0xaa, 0xbf, 0x6f, 0x8c, 0x7f, 0xde, 0xbc, 0xba, 0xda, 0xda, 0x28, 0x70, 0xf9, 0xcf, 0xab, - 0xab, 0xdf, 0x36, 0x2b, 0x8b, 0xde, 0x70, 0xef, 0xca, 0xbd, 0x6f, 0x5e, 0x24, 0xa6, 0x21, 0x0c, - 0x23, 0x1d, 0xab, 0x50, 0x38, 0x86, 0x81, 0xa3, 0xf6, 0x18, 0xb3, 0xe4, 0x07, 0x4e, 0x12, 0x53, - 0xb0, 0xb7, 0xbf, 0x7f, 0x78, 0x71, 0xf1, 0x6f, 0x1d, 0x87, 0x4f, 0xa3, 0xc7, 0xdc, 0xd2, 0x1f, - 0xad, 0x61, 0xcc, 0xea, 0x78, 0xd1, 0xfa, 0x78, 0x7d, 0xa2, 0xdf, 0x2d, 0x01, 0x68, 0xd0, 0x1a, - 0xcc, 0x31, 0xb3, 0xc9, 0xf6, 0x12, 0x0b, 0xde, 0xfa, 0x72, 0xb2, 0xf7, 0xd9, 0x22, 0x52, 0xb2, - 0x01, 0xa7, 0x8e, 0xa5, 0x82, 0x24, 0x2a, 0xe0, 0xd5, 0x5a, 0x78, 0xcb, 0xb2, 0xeb, 0x2c, 0xa3, - 0xf1, 0x1a, 0xc6, 0x37, 0xe1, 0xcc, 0x46, 0x9c, 0x73, 0x31, 0x96, 0x04, 0xd2, 0x3c, 0xac, 0x85, - 0x86, 0x29, 0x98, 0xa7, 0x9d, 0x8e, 0xa3, 0x2d, 0x5f, 0x3b, 0xff, 0x04, 0xe6, 0x98, 0x82, 0x67, - 0xb2, 0xb1, 0x38, 0x63, 0xf8, 0x6c, 0x3c, 0x24, 0x0d, 0x91, 0x34, 0x44, 0xd2, 0x30, 0x0f, 0x3f, - 0x16, 0x1f, 0x9f, 0xbc, 0x59, 0x2f, 0x33, 0x26, 0x58, 0x01, 0xbe, 0x20, 0x67, 0x16, 0x0c, 0x8a, - 0xe5, 0x42, 0x62, 0x99, 0x27, 0x6c, 0x89, 0x26, 0x2f, 0xce, 0xf4, 0x60, 0x28, 0x90, 0x51, 0x20, - 0xa3, 0x40, 0xce, 0xb8, 0x63, 0xd0, 0x8b, 0xf3, 0x9a, 0x96, 0x42, 0x2f, 0xce, 0xbc, 0x0f, 0x86, - 0x5e, 0x9c, 0x27, 0x9b, 0x08, 0xbd, 0x38, 0xe8, 0xc5, 0xd1, 0x49, 0x56, 0x58, 0xe8, 0xc5, 0x41, - 0x2f, 0x0e, 0x7a, 0x71, 0x96, 0x93, 0x63, 0x5b, 0x2f, 0x2f, 0xce, 0xe5, 0xf9, 0x9f, 0x9f, 0xff, - 0x8b, 0x4e, 0x1c, 0x0d, 0x03, 0xff, 0xda, 0x89, 0x33, 0x9e, 0xe7, 0xd5, 0xf7, 0xe1, 0x7c, 0x4e, - 0x94, 0xee, 0xc8, 0x6d, 0xc0, 0xa4, 0x75, 0x43, 0x3c, 0xe6, 0x58, 0x6e, 0x20, 0xe2, 0xa9, 0xe6, - 0xdf, 0xad, 0x64, 0x3e, 0xd0, 0x97, 0x63, 0x76, 0x2f, 0xce, 0xec, 0xc7, 0x8c, 0x8b, 0x82, 0x3e, - 0x1d, 0x24, 0x0f, 0xcb, 0x22, 0x0f, 0x93, 0x1d, 0x98, 0x50, 0x35, 0xb2, 0x38, 0x79, 0x38, 0x3d, - 0x18, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, - 0x88, 0xe4, 0x21, 0x92, 0x87, 0xab, 0x48, 0x1e, 0x26, 0xb2, 0x59, 0x24, 0xa2, 0x10, 0xf9, 0xc3, - 0x5f, 0xf1, 0x87, 0x57, 0x57, 0x5b, 0x05, 0x06, 0xa8, 0xe0, 0x86, 0x43, 0xb6, 0x7a, 0xad, 0xd8, - 0xea, 0x65, 0xdb, 0x70, 0xfa, 0x85, 0xdc, 0xae, 0x86, 0xb1, 0xb4, 0x40, 0x75, 0x03, 0x18, 0xf4, - 0xb1, 0x61, 0x8d, 0x60, 0x7c, 0xa0, 0x93, 0xb3, 0xd3, 0x78, 0x68, 0x8d, 0x1d, 0xde, 0xa5, 0x50, - 0x19, 0xcb, 0x21, 0x05, 0xf4, 0x48, 0x03, 0xcd, 0x98, 0x1b, 0x37, 0xba, 0xf6, 0x8d, 0x7e, 0x75, - 0xf5, 0xdb, 0xcf, 0x02, 0xbb, 0x6d, 0xb3, 0xf0, 0x5e, 0x5f, 0x34, 0xbe, 0xd2, 0xbc, 0xd1, 0xd1, - 0x59, 0x3c, 0xd7, 0xbe, 0x2b, 0x54, 0xbb, 0x7a, 0x9a, 0x31, 0x29, 0x56, 0xc3, 0x7a, 0xda, 0x90, - 0xd7, 0x5e, 0xcb, 0x3a, 0x1d, 0xbc, 0x50, 0x4d, 0xeb, 0xa2, 0x33, 0x8d, 0x6e, 0xf9, 0x7c, 0xf7, - 0x40, 0xb7, 0x3c, 0xba, 0xe5, 0xbb, 0x56, 0x65, 0xcf, 0xf3, 0x82, 0x5b, 0xea, 0x24, 0x2e, 0x60, - 0x69, 0xf9, 0xe4, 0xde, 0xea, 0x53, 0x4b, 0x86, 0xd4, 0x66, 0x2e, 0xa3, 0xcf, 0x7d, 0xc1, 0x57, - 0xfc, 0xd1, 0x19, 0xbc, 0x85, 0x2e, 0xfa, 0x72, 0xd2, 0x2d, 0xf3, 0x2f, 0x10, 0xba, 0xeb, 0x4b, - 0xd4, 0x43, 0xab, 0xe4, 0xae, 0x5f, 0xea, 0x9e, 0xc2, 0x9a, 0xca, 0x93, 0x4e, 0x97, 0xfb, 0xcc, - 0xd4, 0x68, 0x37, 0xfb, 0x2c, 0x65, 0x29, 0xaf, 0x9e, 0xad, 0x01, 0xef, 0x0b, 0xe6, 0xde, 0xfc, - 0x8d, 0x78, 0x67, 0x2c, 0xba, 0xbc, 0xa5, 0x20, 0x1b, 0x58, 0x0a, 0x72, 0xa1, 0x3a, 0x04, 0x4b, - 0x41, 0xce, 0xbb, 0x6b, 0xb0, 0x14, 0xa4, 0x85, 0x71, 0x40, 0x1a, 0x40, 0x19, 0xc6, 0x01, 0x15, - 0x65, 0x0f, 0x31, 0x0e, 0xe8, 0x57, 0xd3, 0x83, 0x71, 0x40, 0x59, 0x07, 0xc5, 0x38, 0x20, 0x03, - 0xd4, 0xc3, 0x34, 0x7d, 0x88, 0x71, 0x40, 0xe5, 0xac, 0x1a, 0xc6, 0x01, 0x61, 0x58, 0x46, 0x8e, - 0x01, 0x31, 0x89, 0x10, 0x04, 0x4b, 0x84, 0xa5, 0x20, 0x17, 0x6b, 0x67, 0xbc, 0x64, 0x6f, 0x60, - 0x29, 0x48, 0xad, 0xa0, 0x01, 0x4b, 0x41, 0xce, 0xbd, 0xf3, 0xb0, 0x14, 0x64, 0x99, 0x90, 0x06, - 0x98, 0x1f, 0x02, 0x2b, 0x27, 0x22, 0xc7, 0x86, 0x1c, 0x1b, 0x56, 0x4e, 0x84, 0x5d, 0x39, 0x11, - 0x0b, 0x0d, 0xa2, 0xfc, 0x42, 0xf9, 0xb5, 0x56, 0xf2, 0x0b, 0x7d, 0x04, 0xaf, 0x09, 0x75, 0xf4, - 0x11, 0xcc, 0xfb, 0x60, 0xe8, 0x23, 0x78, 0xb2, 0x89, 0xd0, 0x47, 0x80, 0x3e, 0x02, 0x9d, 0xa6, - 0xb0, 0x85, 0x3e, 0x02, 0xf4, 0x11, 0xa0, 0x8f, 0xc0, 0x30, 0x83, 0x83, 0x3e, 0x82, 0x37, 0xf8, - 0x21, 0xcc, 0x68, 0xc0, 0x8c, 0x06, 0x2c, 0x34, 0x38, 0xcf, 0x06, 0xc4, 0x42, 0x83, 0x8b, 0x00, - 0x38, 0xe8, 0x31, 0x98, 0x5d, 0x55, 0xac, 0xcb, 0x87, 0x5c, 0x1b, 0x72, 0x6d, 0xc8, 0xb5, 0x21, - 0xd7, 0x86, 0x5c, 0x1b, 0x72, 0x6d, 0xc8, 0xb5, 0x21, 0xd7, 0x86, 0x5c, 0x5b, 0x56, 0xd9, 0x8c, - 0x75, 0xf9, 0xb0, 0x2e, 0x5f, 0x59, 0x1b, 0x0e, 0xc9, 0x5d, 0xac, 0xcb, 0xb7, 0x88, 0x0d, 0x87, - 0x75, 0xf9, 0xf2, 0x4c, 0x1e, 0xd6, 0xe5, 0xc3, 0xba, 0x7c, 0x1a, 0xa4, 0x81, 0x66, 0xcc, 0x8d, - 0x1b, 0x1d, 0xeb, 0xf2, 0x61, 0x5d, 0x3e, 0x33, 0xf7, 0xc7, 0xba, 0x7c, 0x58, 0x97, 0xef, 0xad, - 0xb1, 0xd0, 0x8b, 0x5d, 0x40, 0x2d, 0xa0, 0x17, 0xdb, 0x0c, 0x30, 0xc0, 0xba, 0x7c, 0x85, 0x36, - 0x23, 0xd6, 0xe5, 0x5b, 0xb4, 0xc6, 0x5f, 0x79, 0xef, 0xf6, 0xda, 0x95, 0xb1, 0x1b, 0x55, 0x7f, - 0x33, 0x55, 0xc5, 0xee, 0x9d, 0xc6, 0x69, 0xcc, 0x3b, 0x7d, 0x26, 0xa6, 0xad, 0x92, 0xa9, 0x3c, - 0x9f, 0x88, 0x6c, 0xc5, 0xc7, 0x42, 0xfa, 0x78, 0x32, 0xf8, 0xb7, 0xbd, 0xc7, 0xc1, 0xbf, 0x5d, - 0x8c, 0x07, 0xff, 0x32, 0xb7, 0x47, 0xfa, 0xed, 0xa9, 0xfd, 0xf5, 0x37, 0xde, 0x98, 0xf4, 0xca, - 0x5e, 0x34, 0x88, 0xc5, 0x16, 0x75, 0xe6, 0x02, 0x51, 0xf3, 0xad, 0x46, 0xaa, 0xa9, 0x3e, 0x04, - 0x76, 0x95, 0xb9, 0xdd, 0xa9, 0x39, 0x7f, 0xf6, 0x8b, 0xf8, 0x67, 0x8f, 0x0c, 0xba, 0x53, 0x0b, - 0x30, 0xe7, 0x94, 0x3f, 0x53, 0xb1, 0x95, 0x3d, 0xc7, 0x19, 0x67, 0x1b, 0x4b, 0xaa, 0x14, 0xe3, - 0x03, 0x69, 0xa9, 0xc0, 0x22, 0xd6, 0xc9, 0xde, 0xa7, 0xc7, 0xe8, 0xa1, 0x79, 0xc7, 0xce, 0x56, - 0xf5, 0x30, 0x73, 0xa0, 0x48, 0x9e, 0xc0, 0x90, 0x02, 0x81, 0x20, 0x79, 0xd5, 0x75, 0xe1, 0x40, - 0x8f, 0xc2, 0x1a, 0xb7, 0x58, 0x20, 0x87, 0x5e, 0xa9, 0x94, 0xb5, 0x4a, 0x61, 0xe5, 0xa9, 0x20, - 0xc9, 0x5f, 0xb6, 0x33, 0xa7, 0x3c, 0x7a, 0xe9, 0x90, 0x1c, 0x72, 0xdb, 0x0b, 0x24, 0xe3, 0x03, - 0xcb, 0x0e, 0xb8, 0x22, 0x8c, 0x53, 0x91, 0xa0, 0x91, 0x51, 0xec, 0x5d, 0x8a, 0xa8, 0xc7, 0x50, - 0xc5, 0xbe, 0xe2, 0x0e, 0x51, 0xc4, 0x0a, 0xb8, 0x75, 0xa8, 0x86, 0x54, 0x70, 0xaa, 0xa6, 0x02, - 0xf1, 0xb6, 0x2c, 0xeb, 0x72, 0x48, 0x25, 0xb5, 0x88, 0xa0, 0xc9, 0x20, 0x52, 0x11, 0xee, 0x10, - 0xe1, 0x5c, 0xf1, 0x93, 0xc6, 0x7b, 0x2b, 0x7d, 0x6c, 0xa9, 0xee, 0xbd, 0x51, 0x74, 0x5f, 0x66, - 0xfc, 0x59, 0xb8, 0xfa, 0x68, 0x0d, 0xab, 0x8f, 0x2e, 0x14, 0x29, 0x2f, 0xa4, 0xfa, 0xe8, 0x82, - 0xe4, 0x43, 0x01, 0x52, 0x23, 0x1f, 0x89, 0x51, 0x6c, 0x8f, 0x32, 0xb7, 0xab, 0xee, 0xc3, 0xc4, - 0x70, 0x66, 0xae, 0xea, 0x32, 0x4a, 0xe9, 0x4e, 0xad, 0xd1, 0x24, 0xce, 0x09, 0x19, 0xfc, 0x7b, - 0xc1, 0x9b, 0xb7, 0x00, 0x19, 0x61, 0x6c, 0xeb, 0xfe, 0x7a, 0xbe, 0x4a, 0x09, 0xaf, 0xd5, 0x41, - 0x2a, 0x4c, 0x15, 0xcb, 0x49, 0xa2, 0xae, 0xe3, 0xa9, 0x7e, 0x5a, 0x93, 0xc5, 0x62, 0x72, 0x04, - 0x9b, 0xf2, 0xae, 0x80, 0x06, 0x72, 0x40, 0x3f, 0x19, 0xa0, 0xd5, 0xf8, 0x7f, 0x56, 0xe8, 0xe6, - 0xcd, 0x89, 0x5c, 0x4e, 0xa3, 0xf6, 0x9d, 0x5e, 0xa3, 0xbc, 0xa8, 0xa1, 0x72, 0xfd, 0x96, 0xa1, - 0x92, 0xcd, 0x2a, 0xd4, 0x63, 0x0d, 0xce, 0xb1, 0xe3, 0xe6, 0xb1, 0xfb, 0x7e, 0xbd, 0x03, 0x5e, - 0x9f, 0x97, 0x5f, 0x48, 0x89, 0x8a, 0x3d, 0x01, 0x39, 0xbf, 0x9e, 0x8b, 0xf4, 0xc0, 0x8f, 0xbf, - 0xff, 0xc6, 0x2c, 0xcf, 0x87, 0xb8, 0xe6, 0x46, 0x58, 0x59, 0x10, 0xd5, 0x53, 0xed, 0x34, 0xcf, - 0xcc, 0x67, 0x94, 0x34, 0xb9, 0xf1, 0x51, 0x6e, 0xe1, 0x31, 0xab, 0x44, 0x2a, 0x86, 0xcd, 0xf9, - 0x79, 0xad, 0x94, 0x27, 0x62, 0xb5, 0x9b, 0xd5, 0xae, 0xcf, 0x2e, 0x93, 0x33, 0xe6, 0x62, 0x94, - 0x6e, 0x52, 0xcf, 0xb5, 0xe1, 0x56, 0xcf, 0xa0, 0x9e, 0x67, 0x43, 0x9a, 0x81, 0xcb, 0x99, 0xf3, - 0x1c, 0xf2, 0x87, 0x47, 0x3c, 0x86, 0x3f, 0x2c, 0x0d, 0xe0, 0x17, 0xd4, 0xa5, 0x82, 0x72, 0x9b, - 0x96, 0x89, 0xfa, 0xcf, 0x8f, 0xf6, 0xad, 0xc6, 0x4e, 0xa7, 0xd9, 0x8d, 0x0d, 0x77, 0x2b, 0x55, - 0x54, 0xd2, 0xfa, 0x24, 0x82, 0x28, 0xb4, 0x4e, 0x8f, 0x3f, 0x5a, 0x55, 0x8b, 0xb9, 0x7b, 0x1e, - 0x23, 0x72, 0xc1, 0x16, 0xc0, 0xe3, 0xfc, 0x2c, 0x93, 0x19, 0x90, 0x69, 0x02, 0xa1, 0xc1, 0x37, - 0xc3, 0xe4, 0x7c, 0xe1, 0xde, 0x45, 0x73, 0xe0, 0xcb, 0x39, 0x20, 0x03, 0xe5, 0xf1, 0x61, 0x75, - 0xb2, 0xab, 0xbc, 0xc9, 0x85, 0x73, 0xb3, 0xd3, 0x2e, 0x89, 0x3c, 0x95, 0xe9, 0x78, 0x57, 0xe2, - 0x6d, 0x3a, 0xdf, 0xbe, 0xb9, 0x46, 0xad, 0x8b, 0x5a, 0xb7, 0x54, 0xad, 0xdb, 0x0f, 0x02, 0x8f, - 0x66, 0x73, 0x3b, 0x4c, 0xd4, 0x6e, 0x1d, 0xd5, 0xee, 0x3c, 0x5a, 0xc3, 0xf1, 0x19, 0xbf, 0x50, - 0x44, 0x45, 0xa8, 0x7c, 0x8b, 0x28, 0xdf, 0xa9, 0x69, 0x44, 0x15, 0xbc, 0x8c, 0x2a, 0xd8, 0x57, - 0x51, 0x76, 0xf5, 0x1b, 0x5f, 0x84, 0x3a, 0x0f, 0x75, 0x5e, 0xa9, 0x3a, 0x2f, 0x62, 0x5c, 0xd5, - 0x3b, 0x39, 0x54, 0x5e, 0x86, 0x9c, 0xf0, 0x9c, 0xb9, 0xdf, 0x39, 0xf4, 0x51, 0x91, 0x5c, 0xee, - 0x34, 0x01, 0x38, 0x6f, 0x29, 0x0c, 0x5d, 0x59, 0xbe, 0xc5, 0xb3, 0x79, 0xf3, 0x78, 0x5e, 0x8a, - 0xe4, 0x54, 0xa7, 0x53, 0xd7, 0x69, 0xb7, 0x9b, 0x6d, 0xf8, 0xd3, 0x87, 0x2a, 0xd2, 0xbc, 0x8a, - 0x1c, 0x3b, 0x13, 0x32, 0xea, 0xc8, 0xe4, 0x2a, 0x54, 0x92, 0xa8, 0x24, 0x91, 0x8e, 0x85, 0x62, - 0x17, 0x6e, 0x37, 0x1a, 0xcd, 0xae, 0xb5, 0x67, 0xfd, 0xbf, 0xbd, 0xcf, 0x9f, 0xac, 0x03, 0xa2, - 0x88, 0x75, 0x1a, 0x38, 0xd4, 0x4b, 0xe2, 0xa9, 0x52, 0x13, 0xc7, 0x3a, 0x25, 0x9c, 0x0c, 0x92, - 0x4c, 0x20, 0xb4, 0x0c, 0x5f, 0xb1, 0x0c, 0x33, 0x4f, 0x24, 0x2a, 0xbe, 0x65, 0x54, 0x7c, 0x2a, - 0x8b, 0x18, 0x7a, 0x2c, 0x15, 0x37, 0x7f, 0x2f, 0x0c, 0x54, 0x7c, 0xa8, 0xf8, 0x9e, 0x41, 0x7b, - 0xee, 0x10, 0x15, 0x88, 0xfb, 0x0c, 0xf1, 0xde, 0xf9, 0x95, 0x25, 0x73, 0x28, 0x57, 0x4c, 0xdd, - 0x0b, 0xea, 0xe6, 0xd1, 0x98, 0x19, 0xcc, 0x87, 0xca, 0xf1, 0xf8, 0x56, 0x1f, 0x89, 0xa4, 0xf9, - 0xa3, 0x8f, 0x1f, 0x83, 0x82, 0x73, 0x34, 0x9c, 0x19, 0x99, 0x3e, 0x32, 0x57, 0x7a, 0x66, 0xd1, - 0x66, 0x53, 0x84, 0x93, 0x6a, 0xa1, 0x87, 0xd7, 0xf1, 0x12, 0xc5, 0x5e, 0x66, 0xe6, 0xa5, 0x5c, - 0xc7, 0x61, 0x05, 0xea, 0x18, 0xbe, 0x5f, 0xf4, 0xf3, 0x87, 0x22, 0x08, 0xf7, 0x94, 0x0f, 0xf9, - 0x15, 0x88, 0xb0, 0x39, 0x55, 0x90, 0xdf, 0x80, 0xc9, 0x60, 0x67, 0xa7, 0xd6, 0x68, 0xef, 0x9f, - 0x1f, 0xf5, 0x8e, 0x39, 0xe8, 0x57, 0xe9, 0x0f, 0xc2, 0x30, 0xf0, 0x98, 0x7d, 0x4f, 0x6c, 0x3b, - 0x88, 0xb8, 0x8a, 0xed, 0x10, 0xc0, 0xaf, 0xe3, 0x87, 0x9e, 0x84, 0xfc, 0xfc, 0x81, 0xe2, 0x67, - 0x4e, 0x04, 0xfa, 0x74, 0x7b, 0xd1, 0x61, 0x18, 0xf0, 0xde, 0xf0, 0x5e, 0x32, 0x9b, 0x78, 0x7f, - 0x72, 0xd0, 0xe2, 0x96, 0x8e, 0x93, 0x76, 0x9a, 0xa7, 0x7d, 0x06, 0x5b, 0x64, 0x8d, 0x82, 0xed, - 0xeb, 0x8d, 0x55, 0x78, 0x89, 0x3a, 0xe8, 0x97, 0xe0, 0x2e, 0xe3, 0xac, 0x4f, 0xb8, 0x03, 0xfa, - 0x98, 0x3b, 0xd2, 0x03, 0xbd, 0x97, 0xbc, 0xc0, 0x26, 0xde, 0x25, 0xf1, 0xbe, 0x83, 0x16, 0x4f, - 0xa1, 0x27, 0x24, 0x6c, 0x2c, 0x48, 0x42, 0xd0, 0x78, 0xe3, 0x5e, 0x30, 0xe0, 0x60, 0x96, 0x78, - 0xd1, 0xa7, 0x30, 0xe0, 0x67, 0x1c, 0x36, 0xec, 0x20, 0x5e, 0x1b, 0xf2, 0xf3, 0xdf, 0x04, 0xcc, - 0xa6, 0x47, 0x7f, 0x9f, 0x81, 0x5e, 0x03, 0xe5, 0x5f, 0x44, 0xfd, 0x94, 0x2a, 0x86, 0xfc, 0x2a, - 0x0e, 0x1b, 0x30, 0x45, 0xbc, 0x5e, 0x70, 0x4b, 0x85, 0xc7, 0x38, 0xe8, 0x77, 0x19, 0xb2, 0x30, - 0x04, 0x0d, 0xc2, 0x5d, 0x22, 0x41, 0x4b, 0x58, 0x27, 0xb0, 0xe5, 0x3e, 0xe9, 0x7b, 0xf4, 0x94, - 0xd8, 0x1e, 0xb9, 0xa7, 0x02, 0x3a, 0x01, 0xf5, 0x17, 0x13, 0xd4, 0xa3, 0x52, 0xf6, 0x1a, 0x3d, - 0xd0, 0x10, 0x90, 0x84, 0x7d, 0xd0, 0xe0, 0x83, 0x05, 0x77, 0x0d, 0xd0, 0x5a, 0x8f, 0xbb, 0x44, - 0xc2, 0xd7, 0xda, 0x9f, 0x0e, 0x0e, 0xf7, 0x3e, 0xef, 0x81, 0xa6, 0x9d, 0x42, 0xc5, 0x6c, 0xe2, - 0xed, 0x0f, 0x09, 0xe7, 0xd4, 0x4b, 0xa2, 0x81, 0x21, 0xbf, 0x8e, 0xcd, 0xa4, 0x1d, 0x1c, 0x5f, - 0x9c, 0x14, 0x6c, 0x5a, 0xb4, 0xf8, 0xf7, 0xb0, 0xd5, 0xa1, 0x1f, 0x79, 0xd0, 0x75, 0x77, 0x52, - 0xf9, 0x06, 0xf2, 0x4b, 0x28, 0x51, 0xab, 0xed, 0x40, 0x57, 0xda, 0x07, 0x81, 0x2d, 0x27, 0x8a, - 0xfb, 0xcf, 0x50, 0x2a, 0x41, 0x09, 0x68, 0x37, 0x52, 0x0c, 0xcb, 0x07, 0xd0, 0x25, 0xd5, 0x8d, - 0x7f, 0x4b, 0x04, 0xfd, 0xc2, 0x84, 0x8a, 0x88, 0xf7, 0x99, 0xd9, 0xc0, 0xed, 0x0c, 0x2a, 0x3c, - 0xc2, 0x1b, 0x2b, 0xe0, 0xbe, 0x00, 0xed, 0xd2, 0x93, 0x36, 0x74, 0x66, 0x19, 0xf2, 0xf3, 0x0f, - 0xd8, 0x80, 0xf4, 0x99, 0x9a, 0x94, 0x7b, 0x5b, 0x09, 0xc3, 0x75, 0xa2, 0x2f, 0xc6, 0x00, 0x11, - 0x34, 0xa6, 0xea, 0x7b, 0x5f, 0xa8, 0xad, 0xc8, 0x85, 0x22, 0xa0, 0x31, 0x89, 0x0c, 0x38, 0x55, - 0x3d, 0xa2, 0x86, 0xc0, 0x71, 0x89, 0xa2, 0x01, 0xdf, 0xa9, 0x41, 0x77, 0xaf, 0x0e, 0x03, 0xa9, - 0x7a, 0x04, 0xb4, 0x47, 0x8f, 0x81, 0x06, 0x52, 0x91, 0x04, 0x4d, 0xe5, 0xdc, 0xde, 0x12, 0xde, - 0xeb, 0x81, 0x46, 0x4e, 0x43, 0x67, 0x58, 0xdf, 0x69, 0x34, 0xa0, 0x9b, 0x49, 0xa7, 0x91, 0xa7, - 0x58, 0xe8, 0xd1, 0xbb, 0x00, 0xb4, 0x7a, 0x70, 0x6e, 0xfa, 0xe7, 0xb6, 0xbd, 0x0a, 0x76, 0x9e, - 0xa0, 0xc4, 0x1e, 0x1e, 0x5c, 0x9c, 0x80, 0xc6, 0x84, 0x6e, 0x08, 0x7e, 0x33, 0xc9, 0x53, 0x62, - 0x9f, 0xc0, 0xf7, 0x5e, 0x30, 0x9f, 0x88, 0xfb, 0xe3, 0x8b, 0x83, 0xcf, 0xe0, 0x79, 0xe7, 0xb3, - 0x1b, 0x2a, 0x8e, 0x41, 0xef, 0x2b, 0x45, 0x4f, 0x18, 0x87, 0x1d, 0x80, 0x63, 0x07, 0xc0, 0x6d, - 0xbc, 0x61, 0xe0, 0xd3, 0x90, 0x13, 0xd0, 0xa7, 0x01, 0x7a, 0x2c, 0x9a, 0xcb, 0xfa, 0x82, 0xae, - 0x80, 0x6d, 0x3d, 0xd8, 0xae, 0x35, 0x89, 0xea, 0xb4, 0xbe, 0xc3, 0xc6, 0xb1, 0x1e, 0x68, 0xfe, - 0xcc, 0x6b, 0xb2, 0xf0, 0x0e, 0xba, 0xe7, 0x6b, 0xa0, 0x40, 0x2b, 0xb6, 0xe1, 0x7d, 0x48, 0x85, - 0x0d, 0xff, 0x40, 0x8f, 0x52, 0x75, 0x7a, 0x5e, 0x04, 0xda, 0x4b, 0x2f, 0x81, 0x33, 0xca, 0x52, - 0x11, 0x71, 0x02, 0xfb, 0x3c, 0x33, 0xf7, 0x8b, 0xcb, 0x92, 0x9c, 0x4f, 0xc8, 0x60, 0x0f, 0xb6, - 0x5f, 0x28, 0x31, 0x1a, 0x0e, 0x8e, 0x0f, 0x60, 0x93, 0x94, 0xb1, 0xd5, 0x03, 0x3c, 0x01, 0x72, - 0xc4, 0xcd, 0xac, 0x82, 0x39, 0xed, 0x8a, 0xa3, 0x40, 0xdc, 0x12, 0xe1, 0xc0, 0x7e, 0x09, 0xe2, - 0xd3, 0x73, 0xea, 0x91, 0x7b, 0xd0, 0x88, 0x09, 0xb8, 0xd7, 0x7a, 0x92, 0xdb, 0xd5, 0x6e, 0x81, - 0x3e, 0xda, 0x12, 0x74, 0x6e, 0xda, 0x3f, 0x1e, 0x6c, 0xdb, 0x87, 0xd4, 0x1b, 0xa7, 0x61, 0x38, - 0xea, 0x10, 0x09, 0x5c, 0x43, 0xec, 0x49, 0x76, 0x16, 0x29, 0xe0, 0x2f, 0x71, 0xe9, 0x80, 0x56, - 0xd4, 0x14, 0xf4, 0x61, 0xe6, 0x12, 0xb6, 0x4b, 0x57, 0xfa, 0x8e, 0x3c, 0xb8, 0x63, 0xc0, 0x2d, - 0x37, 0xfb, 0xfb, 0x65, 0x70, 0x11, 0xff, 0x03, 0x5f, 0x1e, 0x1d, 0xf3, 0x15, 0x88, 0xec, 0x3b, - 0x09, 0x06, 0xcc, 0x26, 0x1e, 0x74, 0xc7, 0x83, 0xa0, 0x83, 0xc8, 0x23, 0x02, 0xba, 0xc7, 0x7d, - 0x52, 0x49, 0xe5, 0x32, 0xf8, 0x4e, 0xf9, 0x39, 0xf0, 0xe2, 0x23, 0x12, 0xba, 0x2f, 0xe8, 0xae, - 0x51, 0x6f, 0x02, 0x4f, 0xe8, 0x72, 0x81, 0x27, 0x31, 0xc3, 0x3e, 0xcd, 0x3e, 0xe8, 0xed, 0xef, - 0x13, 0xfb, 0x82, 0xda, 0xfb, 0x01, 0x57, 0x22, 0xf0, 0x3c, 0xea, 0x1c, 0x1f, 0x81, 0xd6, 0xd9, - 0x0e, 0xff, 0xbb, 0xb1, 0x0a, 0x39, 0xf1, 0x17, 0x2b, 0x15, 0x42, 0xbd, 0x1a, 0x4c, 0x59, 0x92, - 0xe4, 0x6f, 0x07, 0x9c, 0x53, 0x1b, 0x76, 0xf1, 0x0b, 0xd7, 0x23, 0x9c, 0xc6, 0x08, 0x04, 0x34, - 0xf0, 0x90, 0xdb, 0x17, 0x6c, 0x00, 0x1d, 0xd2, 0x3a, 0xb2, 0x7e, 0x74, 0x70, 0x02, 0x1b, 0xcd, - 0xc2, 0xce, 0x46, 0xf3, 0x03, 0x9b, 0x7c, 0xa1, 0x42, 0xb2, 0x80, 0xd7, 0xe1, 0xc7, 0xa1, 0x34, - 0xfc, 0xfe, 0x4a, 0x64, 0xce, 0x1e, 0xfd, 0x0d, 0xfa, 0x54, 0xc3, 0xf6, 0xd5, 0x85, 0x81, 0x5c, - 0x81, 0xe2, 0x4e, 0x2b, 0x52, 0x8d, 0xf1, 0x06, 0x78, 0x20, 0x47, 0x52, 0x4c, 0xd9, 0xa3, 0xe4, - 0x06, 0x74, 0x18, 0x84, 0x14, 0xe1, 0x0a, 0xd4, 0xba, 0xb8, 0x14, 0x84, 0xcb, 0x30, 0x10, 0xd0, - 0x6b, 0xb7, 0x1d, 0x9e, 0x80, 0xae, 0xc1, 0x33, 0xd8, 0xdd, 0xdd, 0x69, 0xc2, 0x46, 0xad, 0xcd, - 0xd5, 0x30, 0xe9, 0x2e, 0xa8, 0xb8, 0x61, 0xb0, 0xab, 0xb6, 0x25, 0x84, 0xc1, 0x21, 0xb7, 0x61, - 0xd7, 0x94, 0x0c, 0x03, 0xde, 0x59, 0x09, 0x56, 0xbf, 0xb9, 0x2f, 0x7d, 0x62, 0x3b, 0xf0, 0x43, - 0xb5, 0x0e, 0x82, 0x5b, 0x0e, 0x9f, 0xbd, 0xf1, 0x43, 0x4f, 0x5e, 0x46, 0xd0, 0x43, 0x92, 0xd3, - 0xd4, 0x27, 0xe8, 0x5d, 0x10, 0x46, 0xee, 0x48, 0xe0, 0x65, 0x57, 0x47, 0xf5, 0x6b, 0x3e, 0x33, - 0xfb, 0x12, 0xf8, 0xe1, 0xb8, 0x69, 0x76, 0xe0, 0x6b, 0xbe, 0x53, 0xd8, 0x21, 0xe2, 0xd5, 0x81, - 0xe4, 0xb0, 0xb1, 0xd4, 0x81, 0x67, 0xb3, 0x43, 0xee, 0xf4, 0x40, 0x1b, 0x15, 0x37, 0xa3, 0x6a, - 0x54, 0x97, 0x03, 0xf8, 0xbe, 0xbc, 0x3f, 0xb9, 0xbd, 0x22, 0xde, 0x3c, 0xaf, 0x01, 0x3d, 0xa5, - 0xcb, 0xbf, 0xf1, 0x56, 0xa1, 0x13, 0x08, 0x7c, 0x4c, 0xcb, 0xa4, 0x03, 0x3b, 0x52, 0x7c, 0x15, - 0x02, 0x7c, 0x65, 0xed, 0x63, 0xc4, 0x1d, 0x8f, 0x02, 0xaf, 0xf7, 0x7e, 0xec, 0xc3, 0xce, 0x1c, - 0x6f, 0x6e, 0x43, 0xaf, 0x57, 0xb3, 0xcf, 0x61, 0x77, 0xbc, 0x1a, 0x65, 0x74, 0xed, 0x03, 0x4f, - 0xba, 0x26, 0xca, 0xef, 0x07, 0xb0, 0x3b, 0xfa, 0x4c, 0x6a, 0x59, 0x9f, 0x5d, 0x80, 0xef, 0x4b, - 0x14, 0x02, 0x4f, 0x58, 0xb6, 0x49, 0xdf, 0xa3, 0x8f, 0xa4, 0xd3, 0xb9, 0xdb, 0x03, 0xee, 0xa7, - 0x90, 0x81, 0xab, 0x6e, 0x89, 0xa0, 0x27, 0x41, 0x10, 0xf6, 0x81, 0xc7, 0xc2, 0xa7, 0x04, 0xd4, - 0xd1, 0x4a, 0xe4, 0x0d, 0x8e, 0x99, 0x83, 0xa3, 0x4f, 0x07, 0xd0, 0xdd, 0x48, 0xb0, 0x4b, 0xcf, - 0x11, 0x41, 0x60, 0x87, 0x8e, 0xb7, 0x7d, 0x0f, 0xb4, 0xdb, 0x45, 0x10, 0x87, 0x05, 0xa7, 0x7b, - 0xfb, 0xab, 0xd1, 0x69, 0x66, 0xdf, 0x57, 0x72, 0x35, 0xdc, 0x16, 0x77, 0x3b, 0x9d, 0x13, 0x12, - 0x4a, 0xe0, 0x79, 0x09, 0xa0, 0xa1, 0x61, 0xe8, 0xf0, 0x24, 0x12, 0x2d, 0x56, 0xdf, 0x75, 0xd8, - 0xc0, 0x2a, 0xbc, 0x25, 0xe1, 0x41, 0xa0, 0xea, 0xf5, 0x8f, 0x12, 0xf4, 0x96, 0x8a, 0x3c, 0x05, - 0x5b, 0x61, 0x10, 0xd8, 0xee, 0xbb, 0xb1, 0x8b, 0xbb, 0x01, 0x3c, 0x61, 0x7e, 0xd8, 0x6c, 0x34, - 0x3f, 0x11, 0x45, 0xbf, 0x53, 0x1a, 0xc2, 0x2e, 0x45, 0x22, 0x42, 0xd8, 0x2d, 0x66, 0xc0, 0x3b, - 0xe6, 0x07, 0xa2, 0x59, 0x6b, 0x9e, 0x1f, 0x5c, 0x82, 0xcf, 0xe0, 0x8c, 0x6d, 0xbb, 0x21, 0x25, - 0xce, 0x0a, 0x14, 0x64, 0xec, 0x13, 0xc9, 0x6c, 0xe8, 0xc5, 0x6e, 0x81, 0x97, 0x31, 0x18, 0x4a, - 0xc9, 0x80, 0x2b, 0x6a, 0xe0, 0x55, 0x18, 0x26, 0x49, 0xe6, 0x47, 0xac, 0x0f, 0xbf, 0xf7, 0xe6, - 0x74, 0x1b, 0xaf, 0x55, 0xe8, 0x27, 0x2a, 0x59, 0x08, 0x3b, 0xd2, 0x60, 0xb2, 0xbb, 0x0e, 0x94, - 0x58, 0x01, 0x3f, 0x8c, 0x47, 0x6e, 0x41, 0x07, 0xf7, 0x43, 0x6f, 0x35, 0xc8, 0xfa, 0x7e, 0x73, - 0xbb, 0x16, 0x12, 0x11, 0xa3, 0x0f, 0xd8, 0xb5, 0xdd, 0x85, 0x0f, 0xbd, 0x23, 0x0e, 0xf0, 0x74, - 0xa3, 0xd8, 0xb8, 0xeb, 0x89, 0xe0, 0xee, 0x7e, 0x05, 0xc4, 0x6b, 0x2b, 0xa9, 0x10, 0xf3, 0x11, - 0xb6, 0x5f, 0x6f, 0xfc, 0x2e, 0x9d, 0x53, 0xe0, 0x91, 0x5c, 0xd4, 0x61, 0xe4, 0x94, 0x30, 0x0f, - 0x7e, 0x07, 0x0a, 0xc9, 0xee, 0x2e, 0x83, 0xa3, 0x20, 0x12, 0xab, 0x50, 0x3a, 0xb3, 0xf3, 0xd7, - 0xe9, 0xde, 0x67, 0xd8, 0x21, 0xc0, 0xbd, 0x5b, 0xe8, 0x45, 0xa2, 0x59, 0xb8, 0x02, 0x25, 0x71, - 0xed, 0xc0, 0x0f, 0x03, 0xc9, 0xe0, 0xf7, 0x67, 0x91, 0x2c, 0xbc, 0x60, 0x03, 0xf8, 0x9d, 0xe1, - 0x60, 0x97, 0xdf, 0x07, 0x1e, 0xdb, 0x35, 0xa9, 0x11, 0x03, 0x3a, 0xd1, 0x53, 0xb8, 0x76, 0xbd, - 0x05, 0x3b, 0xd5, 0x36, 0x0c, 0x78, 0xbd, 0x0d, 0xba, 0x50, 0x0f, 0xb1, 0x15, 0xf5, 0x98, 0x3c, - 0xa5, 0x8a, 0x9c, 0x9c, 0x9d, 0xc1, 0x3e, 0xd5, 0x1e, 0x70, 0x5a, 0x96, 0x85, 0x21, 0x4b, 0xca, - 0x58, 0xb9, 0xc4, 0x86, 0x1e, 0x86, 0x3d, 0x6e, 0x20, 0x0f, 0xda, 0xa8, 0x70, 0x57, 0xa1, 0x84, - 0xd5, 0xf3, 0x6a, 0x6f, 0xf0, 0x43, 0x37, 0x85, 0x6c, 0x34, 0x1b, 0xb0, 0x8b, 0x5a, 0x39, 0x14, - 0x76, 0x6a, 0x6a, 0x1d, 0x74, 0xcc, 0x0d, 0x95, 0x36, 0xec, 0xce, 0x14, 0xb1, 0x7c, 0x5d, 0x81, - 0xb4, 0x4e, 0xcf, 0x87, 0x5d, 0x15, 0x03, 0x36, 0xdc, 0x60, 0xd2, 0xe1, 0xa0, 0xb9, 0x4b, 0x05, - 0xdc, 0x8a, 0x1b, 0xc5, 0xb9, 0x7f, 0xbc, 0x80, 0xee, 0xff, 0xed, 0x05, 0x8c, 0xab, 0xcb, 0x20, - 0xf9, 0xe7, 0x82, 0x0a, 0x06, 0x1b, 0xf5, 0x0d, 0xa1, 0xb7, 0x6e, 0xbd, 0x6b, 0xb4, 0x87, 0x11, - 0x57, 0x9f, 0x44, 0x00, 0xbb, 0xf4, 0xe7, 0x98, 0x43, 0x6e, 0x12, 0xe7, 0x84, 0x80, 0xe6, 0xcb, - 0x42, 0xd8, 0x62, 0x2a, 0x50, 0xfc, 0x4c, 0x45, 0xd0, 0x53, 0x71, 0x40, 0x03, 0xd6, 0x30, 0x0c, - 0x81, 0x4b, 0xa4, 0x10, 0x76, 0x5e, 0xb9, 0x63, 0xc3, 0x76, 0x8f, 0x42, 0xef, 0x37, 0xeb, 0x0a, - 0xb7, 0xde, 0x39, 0x75, 0x05, 0xfc, 0x0a, 0x05, 0xa1, 0x08, 0x14, 0x0d, 0x78, 0xbd, 0x76, 0xda, - 0x67, 0x0a, 0x7a, 0x2f, 0xac, 0x63, 0x1b, 0xb6, 0x09, 0x64, 0x73, 0x01, 0x3c, 0x3f, 0x10, 0xf6, - 0xb1, 0xf6, 0x43, 0xd0, 0xc8, 0xe8, 0x1f, 0xd8, 0x69, 0x8c, 0x44, 0xde, 0x73, 0x7b, 0x35, 0x2a, - 0xc5, 0x9e, 0xf6, 0x8e, 0x81, 0xe3, 0xbb, 0xd3, 0xc8, 0x53, 0xcc, 0x63, 0xfc, 0x3b, 0x7c, 0x15, - 0x37, 0xae, 0xd6, 0x76, 0x1c, 0xee, 0x39, 0x8e, 0xa0, 0xb0, 0x93, 0x1a, 0xed, 0xc0, 0x75, 0x29, - 0xe8, 0xd5, 0xb0, 0xa9, 0x84, 0x4e, 0x30, 0x7d, 0xfc, 0x6b, 0x2f, 0x6c, 0x9c, 0xc2, 0x4e, 0xe5, - 0x97, 0xa2, 0x0f, 0xbc, 0x3a, 0x18, 0x68, 0xaa, 0x38, 0x29, 0xad, 0xff, 0x07, 0x70, 0xc2, 0xd8, - 0xf1, 0x24, 0xe8, 0x54, 0x08, 0xaf, 0xc9, 0x42, 0xe8, 0x35, 0x23, 0x99, 0x74, 0x60, 0xd7, 0x47, - 0x76, 0xd8, 0x80, 0x29, 0xe2, 0xfd, 0x25, 0x48, 0x18, 0x52, 0xb1, 0x42, 0x99, 0xa5, 0xd3, 0x25, - 0x21, 0x1a, 0xe0, 0x2b, 0xbc, 0xcb, 0x4b, 0x07, 0x76, 0x21, 0xc3, 0x24, 0x71, 0xf9, 0xcb, 0x25, - 0x74, 0xec, 0xb1, 0x02, 0x71, 0x4c, 0x44, 0xf9, 0xe3, 0x16, 0xd3, 0x2b, 0x11, 0xc8, 0xb4, 0x1a, - 0x35, 0x84, 0x88, 0xf2, 0xcf, 0x89, 0xc3, 0x02, 0xd0, 0xf6, 0xb7, 0xcd, 0x42, 0xf0, 0x5d, 0xcb, - 0x5d, 0x7b, 0x67, 0x7b, 0xfb, 0x0e, 0x76, 0xb7, 0x4d, 0x7b, 0x05, 0xea, 0x42, 0x08, 0xe6, 0x0c, - 0x28, 0xfc, 0x4a, 0x4e, 0x7f, 0xa9, 0x89, 0xca, 0x00, 0x7f, 0xbc, 0x89, 0xf2, 0x8f, 0x22, 0xd8, - 0xed, 0xf9, 0xfa, 0x4c, 0x49, 0xe8, 0x31, 0x10, 0xf5, 0xe6, 0x6e, 0x6b, 0x95, 0x4a, 0x44, 0xac, - 0x86, 0xfe, 0x4e, 0x6b, 0xae, 0x26, 0x98, 0x04, 0x76, 0xc5, 0x71, 0xd8, 0x9d, 0xa6, 0x87, 0xd0, - 0x5b, 0x70, 0x02, 0x67, 0x44, 0xa6, 0x2a, 0x18, 0xf6, 0x44, 0xe0, 0x32, 0xd8, 0xa7, 0x61, 0xdc, - 0x8b, 0x73, 0x05, 0xf8, 0x90, 0xa4, 0xfa, 0xd9, 0x31, 0xec, 0xea, 0x67, 0xff, 0x34, 0x76, 0x9b, - 0x75, 0xd8, 0x1e, 0x6e, 0x3a, 0x58, 0x8d, 0xbe, 0xae, 0x37, 0xcc, 0x66, 0x67, 0xa3, 0xc3, 0x71, - 0x58, 0xb0, 0xa4, 0x4d, 0xae, 0x2b, 0xaf, 0xdf, 0x95, 0x30, 0x69, 0xf9, 0x26, 0xeb, 0xd1, 0x20, - 0x76, 0x9c, 0x1c, 0x70, 0xb9, 0xfc, 0xe7, 0x8c, 0x21, 0x59, 0xae, 0x66, 0x85, 0xe5, 0x3f, 0x2a, - 0x11, 0x36, 0xa7, 0x0a, 0xc2, 0x93, 0x4e, 0xaa, 0x6e, 0xed, 0x9f, 0x1f, 0xf5, 0x8e, 0x39, 0x88, - 0x47, 0xee, 0x0f, 0xc2, 0x30, 0xf0, 0x98, 0x7d, 0x4f, 0x6c, 0x3b, 0x88, 0xb8, 0x62, 0x7c, 0x00, - 0xe1, 0xb1, 0xfd, 0x30, 0x4f, 0x83, 0x99, 0xf2, 0x9f, 0x33, 0x50, 0xfc, 0xcc, 0x89, 0x40, 0x9c, - 0xb2, 0x51, 0xeb, 0xcf, 0x42, 0x4d, 0xf9, 0xcb, 0x7f, 0xea, 0x49, 0x03, 0xb4, 0x66, 0xbe, 0x58, - 0xca, 0x05, 0x88, 0x88, 0x71, 0x59, 0x9c, 0x06, 0xa4, 0x87, 0xad, 0x83, 0x78, 0x58, 0xee, 0x32, - 0xce, 0xfa, 0x24, 0x4f, 0xc3, 0xa3, 0x05, 0x1c, 0xb7, 0x7c, 0x39, 0x46, 0xe5, 0x3f, 0xa8, 0x17, - 0xd8, 0xc4, 0xbb, 0x24, 0xde, 0x77, 0x10, 0xe2, 0x20, 0xf4, 0x84, 0x84, 0x81, 0x69, 0xf2, 0xb4, - 0x83, 0x5f, 0x80, 0x9e, 0xbd, 0x17, 0x0c, 0x08, 0xf8, 0x22, 0x5e, 0xf4, 0x29, 0x6f, 0xef, 0xea, - 0x05, 0x3c, 0x2d, 0xf1, 0xda, 0x10, 0x9e, 0x73, 0xd4, 0x80, 0xed, 0xef, 0x33, 0x10, 0x73, 0xaa, - 0xfc, 0x8b, 0xa8, 0x5f, 0xa0, 0x7c, 0x4a, 0xf9, 0x8f, 0x3c, 0x0e, 0xc5, 0xe9, 0x05, 0xb7, 0x54, - 0x78, 0x8c, 0x83, 0x78, 0xe6, 0xa4, 0x48, 0x0d, 0x84, 0x07, 0x75, 0x89, 0x04, 0x21, 0xb9, 0x1e, - 0x1b, 0x24, 0xe5, 0x2e, 0x9d, 0xbd, 0x18, 0x02, 0x61, 0xe2, 0xcf, 0xe9, 0x35, 0x7a, 0x20, 0xa0, - 0x0c, 0x09, 0xfb, 0x20, 0x94, 0x2e, 0x0b, 0x72, 0x45, 0x23, 0x94, 0xff, 0xa4, 0xdc, 0x25, 0x12, - 0x8e, 0x16, 0xfb, 0x74, 0x70, 0xb8, 0xf7, 0x79, 0x0f, 0x04, 0x6d, 0xf0, 0xc4, 0x05, 0x91, 0x33, - 0x8f, 0xbf, 0xfc, 0xc7, 0xb6, 0x99, 0xb4, 0x83, 0xe3, 0x8b, 0x93, 0x7c, 0x11, 0xbe, 0x0b, 0x78, - 0x5e, 0x5b, 0x1d, 0xfa, 0x91, 0x07, 0x45, 0x97, 0xe5, 0x24, 0xdd, 0xcb, 0x7f, 0x58, 0x25, 0x6a, - 0xb5, 0x1d, 0x28, 0x4a, 0x6c, 0x3a, 0x30, 0x61, 0x52, 0x21, 0x0d, 0x84, 0x36, 0x63, 0x9c, 0x0e, - 0xa0, 0x48, 0x86, 0x1b, 0xff, 0x96, 0x08, 0x3a, 0x0e, 0x8b, 0xfa, 0xcc, 0x6c, 0x20, 0x38, 0x97, - 0x0a, 0x8f, 0xf0, 0x06, 0x20, 0xfa, 0x16, 0x84, 0xcb, 0x41, 0xda, 0x50, 0x18, 0x3a, 0x08, 0xcf, - 0x39, 0x60, 0x03, 0xd2, 0x67, 0x23, 0xe5, 0x00, 0x84, 0xaa, 0x99, 0xa9, 0x48, 0x99, 0x3b, 0xd6, - 0x62, 0x01, 0x98, 0xa1, 0xef, 0x7d, 0xa1, 0xb6, 0x22, 0x17, 0x8a, 0x80, 0xd0, 0xc5, 0x49, 0x12, - 0x46, 0x8f, 0xa8, 0x21, 0x10, 0x7d, 0xac, 0x68, 0xc0, 0x77, 0x6a, 0x50, 0xdc, 0x39, 0xc3, 0x40, - 0xaa, 0x5c, 0x0d, 0x65, 0x16, 0xe0, 0x1f, 0x01, 0x01, 0x14, 0x22, 0x09, 0xc2, 0x44, 0x1f, 0x15, - 0xc0, 0x07, 0x81, 0x0c, 0x86, 0xce, 0xb0, 0xbe, 0xd3, 0x68, 0x40, 0x81, 0xe3, 0x49, 0x15, 0x84, - 0xd0, 0xa3, 0x77, 0x01, 0x08, 0xf1, 0x9a, 0x64, 0xea, 0xd9, 0x90, 0xec, 0x06, 0x41, 0x89, 0x3d, - 0x3c, 0xb8, 0x38, 0x01, 0x81, 0x6d, 0xdc, 0x10, 0xcc, 0x26, 0x90, 0xa7, 0xc4, 0x3e, 0x81, 0xc3, - 0xde, 0x32, 0x9f, 0x88, 0xfb, 0x7c, 0x5d, 0x58, 0x17, 0xc4, 0xdf, 0xe5, 0x6d, 0xec, 0xb4, 0x00, - 0xfe, 0x23, 0x67, 0x8b, 0x9a, 0x05, 0x38, 0xcc, 0xed, 0x00, 0x88, 0xcd, 0x30, 0x0c, 0x7c, 0x1a, - 0x72, 0x02, 0x62, 0xb7, 0x42, 0x89, 0xed, 0x70, 0x59, 0x5f, 0x50, 0x40, 0xb6, 0xd7, 0x60, 0xbb, - 0xd6, 0x24, 0xaa, 0xd3, 0xfa, 0x0e, 0x03, 0x77, 0x79, 0x20, 0x78, 0x0e, 0xaf, 0xc9, 0xc2, 0x3b, - 0x28, 0x8c, 0xfd, 0x40, 0x81, 0x50, 0x00, 0xc3, 0xfb, 0x90, 0x0a, 0x1b, 0xce, 0xc1, 0x1a, 0x85, - 0x58, 0xf7, 0xbc, 0x08, 0x84, 0x37, 0x4f, 0x02, 0x61, 0xe6, 0xa4, 0x22, 0xe2, 0x04, 0xc6, 0xb9, - 0x62, 0xee, 0x17, 0x97, 0xe5, 0xeb, 0x72, 0xb8, 0x00, 0xd0, 0x02, 0x83, 0xe7, 0x4e, 0x40, 0xeb, - 0xc1, 0xf1, 0x01, 0x0c, 0x72, 0x28, 0x46, 0xd7, 0x40, 0x12, 0x42, 0x46, 0x36, 0x37, 0x24, 0x73, - 0xcb, 0x15, 0xb9, 0xfb, 0x6f, 0x2e, 0xe2, 0x61, 0x27, 0x35, 0x35, 0x41, 0x20, 0x02, 0x20, 0x5e, - 0xaf, 0x49, 0x2c, 0x7d, 0xbb, 0x05, 0xe2, 0x88, 0x49, 0x10, 0x31, 0xff, 0xff, 0x78, 0x30, 0x30, - 0x36, 0xa9, 0x37, 0x4e, 0xc3, 0xf0, 0xe2, 0x96, 0x29, 0x7b, 0x08, 0x44, 0xc2, 0xee, 0x49, 0x76, - 0x16, 0x29, 0x20, 0x0f, 0x7b, 0xe9, 0x80, 0x50, 0x5c, 0x14, 0xc4, 0xa1, 0xe2, 0x12, 0x86, 0xab, - 0x48, 0xfa, 0x8e, 0x3c, 0xb8, 0x63, 0x40, 0x2c, 0x01, 0xfb, 0xfb, 0x65, 0x70, 0x11, 0xff, 0x03, - 0xe7, 0xfc, 0x1f, 0x73, 0x40, 0x91, 0x2f, 0xe3, 0xfa, 0x76, 0x50, 0x88, 0x57, 0x41, 0x07, 0x91, - 0x47, 0x04, 0x14, 0xcf, 0xdc, 0x24, 0xb3, 0xf9, 0x32, 0xf8, 0x4e, 0xf9, 0x39, 0x90, 0x24, 0x61, - 0x09, 0x85, 0xdb, 0xbe, 0x6b, 0xd4, 0x9b, 0x40, 0x02, 0xe8, 0x5d, 0x20, 0xc9, 0x55, 0x30, 0x4e, - 0x95, 0x0f, 0x62, 0x7b, 0xfa, 0xc4, 0xbe, 0xa0, 0xf6, 0x7e, 0xc0, 0x95, 0x08, 0x3c, 0x8f, 0x3a, - 0xc7, 0x47, 0x20, 0x74, 0x98, 0xc3, 0xff, 0x6e, 0x40, 0xca, 0xb1, 0xbb, 0x00, 0x19, 0xba, 0x07, - 0x8b, 0xd1, 0x48, 0x92, 0x03, 0xed, 0x80, 0x73, 0x6a, 0xc3, 0x48, 0x6a, 0x75, 0x3d, 0xc2, 0x69, - 0xac, 0x79, 0x41, 0x28, 0x5c, 0xb9, 0x9d, 0xbb, 0x5f, 0xfa, 0x42, 0x38, 0x8e, 0xa3, 0x83, 0x13, - 0x18, 0xe8, 0x0b, 0x46, 0x94, 0xbf, 0x1f, 0xd8, 0xe4, 0x0b, 0x15, 0x92, 0x05, 0xbc, 0x0e, 0xc7, - 0x9f, 0xdc, 0xf0, 0xfb, 0xa0, 0x32, 0x80, 0x8e, 0xfe, 0x06, 0x71, 0xba, 0x60, 0xf8, 0x12, 0xc2, - 0x40, 0x02, 0x2a, 0x6e, 0x00, 0xac, 0x3a, 0xcf, 0x0d, 0x10, 0x47, 0x2d, 0x8b, 0x51, 0x81, 0x47, - 0xc9, 0x0d, 0x08, 0xf7, 0xa7, 0x14, 0x21, 0xa0, 0x1c, 0xd6, 0x02, 0xa5, 0x0f, 0x17, 0xc3, 0x25, - 0x9d, 0x80, 0xc8, 0x65, 0x1f, 0xec, 0xee, 0xee, 0x34, 0x61, 0xa0, 0xac, 0x26, 0x2c, 0x13, 0xe1, - 0x82, 0x8a, 0x1b, 0x06, 0xa3, 0x7a, 0x48, 0x62, 0x38, 0x1e, 0x72, 0x1b, 0x46, 0x2d, 0xa1, 0x30, - 0xe0, 0x1d, 0x50, 0x6c, 0x67, 0x73, 0x5f, 0xfa, 0xc4, 0x76, 0xe0, 0x84, 0x44, 0x14, 0xa9, 0xab, - 0xbe, 0x98, 0x1a, 0x8e, 0x97, 0x11, 0x94, 0x10, 0xb9, 0x34, 0x04, 0x1d, 0x4a, 0xd5, 0xd4, 0x91, - 0x5b, 0x04, 0x48, 0x39, 0xac, 0x51, 0x7e, 0xf8, 0x67, 0x66, 0x5f, 0x02, 0xd9, 0xbc, 0x37, 0xcd, - 0x0e, 0x1c, 0x0d, 0x71, 0x0a, 0x23, 0x04, 0xb1, 0x3a, 0x90, 0x1c, 0x06, 0x56, 0x38, 0xf0, 0x6c, - 0x76, 0xc8, 0x9d, 0x1e, 0x08, 0x50, 0x3b, 0x6e, 0xc6, 0x7b, 0x39, 0x80, 0xe3, 0x6b, 0xf8, 0x93, - 0xdb, 0xc0, 0xbc, 0x0d, 0x5e, 0x03, 0x4a, 0x08, 0xbd, 0x7f, 0xe3, 0x41, 0xaa, 0xec, 0x0b, 0x07, - 0x83, 0x31, 0xe9, 0xc0, 0x88, 0x44, 0x84, 0x14, 0x88, 0x26, 0x6b, 0x79, 0xbb, 0xa1, 0x2f, 0xa4, - 0xfe, 0xe4, 0xb1, 0x0f, 0x23, 0x43, 0xad, 0xb9, 0x0d, 0x25, 0x1f, 0x7c, 0x9f, 0xc3, 0xa8, 0xf4, - 0x3e, 0x8a, 0xa0, 0xdf, 0x07, 0x92, 0xf4, 0x45, 0x94, 0xdf, 0x0f, 0x60, 0x54, 0xca, 0x9e, 0xd4, - 0xee, 0x3b, 0xbb, 0x00, 0x53, 0xd7, 0x3b, 0x04, 0x92, 0x48, 0x65, 0x3f, 0x6d, 0xa6, 0x7a, 0xee, - 0xf6, 0x80, 0xf0, 0xb4, 0x32, 0x70, 0x55, 0x6c, 0x30, 0x9e, 0x04, 0x41, 0xd8, 0x07, 0x12, 0x53, - 0x99, 0x12, 0x08, 0x47, 0xa0, 0xf2, 0x2b, 0xc6, 0x16, 0xe4, 0xd1, 0xa7, 0x03, 0x28, 0xb4, 0x38, - 0x8c, 0x52, 0x27, 0x44, 0x10, 0x18, 0xa1, 0x89, 0x6d, 0xdf, 0x03, 0x41, 0x2f, 0x0b, 0xe2, 0xb0, - 0xe0, 0x74, 0x6f, 0x1f, 0x56, 0xc5, 0xe7, 0x7d, 0x5f, 0x49, 0x58, 0xb4, 0xed, 0xdd, 0x4e, 0xe7, - 0x84, 0x84, 0x12, 0x48, 0xbc, 0x2a, 0x08, 0x88, 0x13, 0x3a, 0x3c, 0x89, 0xec, 0x88, 0xd5, 0x59, - 0x1d, 0x06, 0x70, 0x48, 0x1b, 0x3e, 0x7e, 0x94, 0x20, 0xb6, 0x42, 0xe4, 0x29, 0x18, 0x02, 0x97, - 0xc0, 0x70, 0x2f, 0x8c, 0x5d, 0x64, 0x0d, 0x20, 0x09, 0x78, 0xc3, 0x66, 0xa3, 0xf9, 0x89, 0x28, - 0xfa, 0x9d, 0xd2, 0x10, 0x46, 0xca, 0xb0, 0x08, 0x61, 0x94, 0x7a, 0x06, 0xe3, 0xc0, 0x4b, 0x9a, - 0xa1, 0x9e, 0xe7, 0x69, 0x86, 0xba, 0xa0, 0xcc, 0x95, 0xd8, 0x56, 0x18, 0x52, 0xe2, 0x00, 0x2a, - 0xd0, 0xd3, 0x27, 0x92, 0xd9, 0x50, 0x8a, 0x8a, 0x01, 0x49, 0x73, 0x1c, 0x4a, 0xc9, 0x80, 0x28, - 0x2e, 0x20, 0xd9, 0x98, 0x93, 0x64, 0xb6, 0x23, 0xd6, 0x87, 0xd3, 0x6b, 0x65, 0xba, 0x4c, 0x3d, - 0xa4, 0x3e, 0x31, 0x92, 0x85, 0x30, 0x3c, 0x8f, 0x93, 0x5d, 0x71, 0xa0, 0x04, 0x20, 0xbe, 0xd9, - 0x23, 0xb7, 0x30, 0xfa, 0xa0, 0x02, 0x69, 0x5d, 0xc1, 0xfa, 0x7e, 0x73, 0xbb, 0x16, 0x12, 0x11, - 0x6b, 0x5d, 0x18, 0xb5, 0x26, 0x85, 0x0f, 0xa5, 0x02, 0x35, 0x90, 0x70, 0xf0, 0xd8, 0x58, 0xe8, - 0x89, 0xe0, 0xee, 0x1e, 0x90, 0xd8, 0x6a, 0x25, 0x99, 0xd9, 0x1f, 0x61, 0xf8, 0x1d, 0xc6, 0xcf, - 0xdc, 0x39, 0x05, 0x12, 0x31, 0x41, 0x1d, 0x46, 0x4e, 0x09, 0xf3, 0xe0, 0x54, 0xa0, 0x95, 0xec, - 0xee, 0x32, 0x38, 0x0a, 0x22, 0x01, 0xa9, 0x34, 0x52, 0xe7, 0xaf, 0xd3, 0xbd, 0xcf, 0x30, 0x42, - 0xd5, 0x7a, 0xb7, 0x50, 0x8a, 0xe5, 0xb1, 0x10, 0x50, 0xe9, 0x31, 0x3b, 0xf0, 0xc3, 0x40, 0x32, - 0x38, 0xf5, 0x93, 0x25, 0x0b, 0x2f, 0xd8, 0x00, 0x4e, 0xc7, 0x02, 0x18, 0xe5, 0x3d, 0x81, 0xc4, - 0x50, 0x4c, 0x72, 0xb3, 0x41, 0x24, 0xb8, 0x08, 0xd7, 0xae, 0xb7, 0x60, 0xa4, 0x0c, 0x85, 0x01, - 0xaf, 0xb7, 0x41, 0x24, 0xbc, 0x13, 0x5b, 0x51, 0x8f, 0xc9, 0x53, 0xaa, 0xc8, 0xc9, 0xd9, 0x19, - 0x8c, 0xd3, 0xe5, 0x01, 0xa1, 0xbd, 0x58, 0x18, 0x32, 0x50, 0xbd, 0x9c, 0x89, 0xf2, 0xc7, 0x0d, - 0xee, 0x40, 0x80, 0x5a, 0x17, 0x52, 0xa9, 0x86, 0xe7, 0x55, 0x47, 0xe0, 0x84, 0x2a, 0x09, 0xd9, - 0x68, 0x36, 0x60, 0x14, 0x6f, 0x70, 0x28, 0x8c, 0xd4, 0x9b, 0x3a, 0x08, 0x1f, 0x39, 0x95, 0x36, - 0x8c, 0xca, 0xb4, 0xb1, 0xdc, 0x02, 0x94, 0xce, 0xe2, 0xf9, 0x30, 0xb2, 0x5d, 0x61, 0xa8, 0x59, - 0x26, 0x1d, 0x0e, 0x82, 0x33, 0x52, 0x40, 0xac, 0x82, 0x51, 0xbc, 0xe4, 0xc7, 0x0b, 0x28, 0x7e, - 0xa5, 0x5e, 0xc0, 0xb8, 0xba, 0x0c, 0x92, 0x7f, 0x2e, 0xa8, 0x60, 0x30, 0xd0, 0xcb, 0x10, 0x4a, - 0x8b, 0x9d, 0xbb, 0x46, 0x7b, 0x18, 0x71, 0x05, 0xa6, 0x85, 0xfb, 0x98, 0x8b, 0x6b, 0x12, 0xe7, - 0x84, 0x80, 0xe0, 0x35, 0x42, 0x18, 0x62, 0x21, 0x50, 0xfc, 0x4c, 0x45, 0x50, 0x42, 0xa8, 0x41, - 0x00, 0xac, 0x30, 0x0c, 0x81, 0x48, 0x80, 0x10, 0x46, 0xfe, 0x9a, 0x63, 0xc3, 0x70, 0xc7, 0x40, - 0xe9, 0xff, 0xe3, 0x0a, 0xb7, 0xde, 0x39, 0x75, 0x05, 0x9c, 0x0c, 0xc6, 0x71, 0xff, 0xe5, 0x3a, - 0x98, 0xfe, 0xcb, 0xd2, 0x77, 0xe4, 0xb1, 0x0d, 0x03, 0x6a, 0xdb, 0x5c, 0x00, 0xc9, 0xa3, 0x80, - 0x71, 0xbc, 0xfc, 0x10, 0x84, 0xe6, 0xff, 0x07, 0x46, 0x5a, 0x07, 0x91, 0xf7, 0xdc, 0x86, 0x55, - 0xa9, 0xeb, 0xb4, 0x77, 0x0c, 0x04, 0xa7, 0x24, 0x4d, 0xad, 0x3d, 0xc6, 0xbf, 0xc3, 0x51, 0x05, - 0xe3, 0xaa, 0x21, 0xc7, 0xe1, 0x9e, 0xe3, 0x08, 0x0a, 0x23, 0xc9, 0xc3, 0x0e, 0x5c, 0x97, 0x82, - 0x98, 0x5d, 0x9b, 0x4a, 0x28, 0x04, 0xc1, 0xc7, 0xbf, 0xf6, 0xc2, 0xc6, 0x29, 0x8c, 0x14, 0x40, - 0x29, 0xfa, 0x40, 0xaa, 0x5a, 0x80, 0xa0, 0xdc, 0x92, 0xd2, 0x9d, 0x7f, 0x00, 0x21, 0xde, 0x1c, - 0x4f, 0xde, 0x42, 0xe9, 0xb7, 0x0b, 0xa5, 0x56, 0x10, 0x93, 0x0e, 0x8c, 0xfa, 0x71, 0x0e, 0x1b, - 0x30, 0x45, 0xbc, 0xbf, 0x04, 0x09, 0x43, 0x2a, 0x00, 0x66, 0xce, 0x4c, 0xa7, 0x80, 0x36, 0xc0, - 0x54, 0x9c, 0x94, 0x97, 0x0e, 0x8c, 0x82, 0x37, 0x49, 0x42, 0xd5, 0x97, 0x4b, 0x28, 0x3a, 0x17, - 0x50, 0x1c, 0x01, 0x51, 0xfe, 0xb8, 0xf5, 0x16, 0xa8, 0x40, 0x02, 0x58, 0x39, 0xf7, 0x44, 0xf9, - 0xe7, 0xc4, 0x61, 0x01, 0x08, 0xfb, 0xcc, 0x66, 0x21, 0x98, 0x2e, 0x6c, 0xae, 0xbd, 0xb3, 0xbd, - 0x7d, 0x07, 0xa3, 0xbb, 0x0a, 0xa0, 0x7e, 0xf2, 0x7d, 0xc1, 0x9c, 0x01, 0x85, 0x53, 0xc9, 0xe0, - 0x2f, 0x35, 0x11, 0xb9, 0x60, 0x8e, 0x19, 0x51, 0xfe, 0x51, 0x04, 0xa3, 0x0d, 0x44, 0x9f, 0x29, - 0x09, 0xc5, 0xf7, 0x59, 0x6f, 0xee, 0xb6, 0x20, 0xa6, 0x84, 0xc2, 0xd2, 0x67, 0x69, 0x2d, 0xac, - 0x44, 0x17, 0xc3, 0xa8, 0x98, 0x08, 0xa3, 0x03, 0xd7, 0x10, 0x4a, 0xcb, 0x15, 0x20, 0x16, 0xf0, - 0x54, 0xa5, 0x9b, 0x9e, 0x08, 0x5c, 0x06, 0x63, 0xb7, 0x8e, 0x7b, 0xaf, 0x00, 0xb2, 0x7f, 0x93, - 0xea, 0x1c, 0xc7, 0x30, 0xaa, 0x73, 0xfc, 0xd3, 0xd8, 0x6d, 0xd6, 0x61, 0x78, 0xc8, 0xe8, 0x00, - 0x56, 0xff, 0x9d, 0x1b, 0x66, 0xb3, 0xb3, 0xd1, 0xe6, 0x3d, 0xcc, 0x99, 0x32, 0x9e, 0xe9, 0x8a, - 0xeb, 0x77, 0x7a, 0xc7, 0x9d, 0x73, 0xca, 0x2a, 0xf4, 0x4e, 0x09, 0x52, 0x8d, 0xb8, 0x54, 0x89, - 0x02, 0xec, 0x66, 0x98, 0xb8, 0x8a, 0xa0, 0x2e, 0x15, 0x94, 0xdb, 0xf1, 0x65, 0x5f, 0xdf, 0x99, - 0x5d, 0x9d, 0x74, 0x65, 0xce, 0x8f, 0xf6, 0xad, 0xc6, 0x4e, 0xa7, 0xd9, 0xb5, 0x2e, 0x87, 0xd4, - 0x4a, 0xf3, 0x32, 0xa4, 0x95, 0x44, 0xb6, 0x59, 0xa7, 0xc7, 0x1f, 0xad, 0xaa, 0xc5, 0xdc, 0x24, - 0x2b, 0x32, 0xfb, 0xb6, 0xa9, 0x5c, 0x04, 0x91, 0xb0, 0xb3, 0xcd, 0xc3, 0x93, 0xeb, 0xff, 0x4b, - 0xef, 0x6f, 0x03, 0xe1, 0x8c, 0x3a, 0x6b, 0x4f, 0xa6, 0xe7, 0x7d, 0xbe, 0xb1, 0xfe, 0x20, 0x72, - 0x4f, 0x0c, 0x22, 0x9f, 0x72, 0x55, 0xe9, 0x5a, 0x4a, 0x44, 0x34, 0xe7, 0x40, 0x53, 0xa3, 0x64, - 0x9a, 0x3f, 0xc3, 0x7b, 0x7e, 0xfe, 0x6f, 0x5f, 0x6b, 0xdd, 0xf3, 0x7b, 0x9c, 0x07, 0x8a, 0x28, - 0x16, 0xf0, 0x6c, 0xfb, 0xfd, 0x7e, 0x10, 0xa8, 0x6a, 0x60, 0x57, 0xed, 0xc0, 0x0f, 0x05, 0x95, - 0x92, 0x3a, 0x55, 0x8f, 0x12, 0x37, 0x1e, 0x64, 0xce, 0x43, 0xf9, 0xae, 0xd8, 0x37, 0xde, 0x78, - 0xc1, 0xac, 0x2f, 0x56, 0x91, 0xf6, 0x90, 0xfa, 0x24, 0x24, 0x6a, 0x18, 0xef, 0x8c, 0x0f, 0x41, - 0x48, 0xb9, 0x1d, 0x70, 0x97, 0x0d, 0xaa, 0x2c, 0xdd, 0x17, 0x1f, 0x5e, 0xfa, 0xf8, 0x61, 0xf4, - 0xb5, 0x5f, 0x6f, 0x90, 0xd7, 0xdf, 0xe5, 0x17, 0xef, 0x91, 0x96, 0xdb, 0x7f, 0xf3, 0x0d, 0x66, - 0x0a, 0xf4, 0xbf, 0x71, 0xcc, 0x2a, 0xff, 0x65, 0x3c, 0x3e, 0x97, 0xf5, 0x37, 0xbe, 0xb6, 0x3f, - 0x7a, 0xb5, 0xae, 0x55, 0x7b, 0xe3, 0x8b, 0x3d, 0x41, 0x5d, 0x76, 0x37, 0xdf, 0x4c, 0xa7, 0x78, - 0xc8, 0xae, 0x52, 0x35, 0x9c, 0x43, 0x20, 0x64, 0x15, 0x44, 0xd3, 0x82, 0x27, 0x1c, 0x3d, 0xd8, - 0x9c, 0xa7, 0x21, 0xaf, 0x94, 0x79, 0x22, 0x55, 0xc6, 0xef, 0x65, 0x78, 0x7f, 0x1f, 0x30, 0x31, - 0xdf, 0x74, 0xdb, 0x93, 0x35, 0x9c, 0x73, 0xf2, 0x1e, 0xfd, 0xf6, 0xc9, 0x75, 0x73, 0x4e, 0xc0, - 0x7c, 0x1b, 0x2a, 0xf3, 0xc6, 0xca, 0xb3, 0xc1, 0xf2, 0x6f, 0xb4, 0xa2, 0x9a, 0x2f, 0xf7, 0xc6, - 0xd3, 0xa6, 0xe6, 0x72, 0x6d, 0x44, 0x33, 0x68, 0x6a, 0xde, 0x0d, 0x9a, 0x5e, 0x40, 0x06, 0x03, - 0x41, 0x07, 0x44, 0xd1, 0x2a, 0x73, 0xb2, 0x4f, 0x7d, 0x8a, 0x56, 0xa7, 0x47, 0xc9, 0x38, 0x79, - 0xe3, 0x4d, 0x5c, 0xcb, 0x78, 0x59, 0xd6, 0xcd, 0x5c, 0x64, 0x53, 0xbf, 0xb4, 0xb9, 0x3d, 0x32, - 0x58, 0x30, 0xbc, 0xcb, 0xb5, 0xd9, 0xcd, 0x62, 0xbb, 0xf1, 0xbc, 0x98, 0x86, 0x6d, 0x19, 0x57, - 0x3c, 0x81, 0x92, 0x85, 0xd6, 0x3b, 0x46, 0x59, 0x82, 0xba, 0x79, 0x16, 0x7c, 0x22, 0xa3, 0xb7, - 0x73, 0x5c, 0xdb, 0x4b, 0x81, 0x91, 0x5d, 0x65, 0x6e, 0x77, 0x0a, 0x08, 0x3d, 0xfb, 0xc5, 0xf8, - 0x67, 0x1e, 0x3f, 0xae, 0xd1, 0xa9, 0xcc, 0x89, 0x5c, 0xf5, 0x21, 0xd8, 0xec, 0x3b, 0x26, 0xc3, - 0x2b, 0x56, 0x48, 0xa4, 0x82, 0x2a, 0xa7, 0x83, 0x40, 0x31, 0xa2, 0x68, 0x01, 0x79, 0xf8, 0x74, - 0x9c, 0x8c, 0x93, 0x7c, 0x40, 0x5d, 0x12, 0x79, 0x2a, 0xb3, 0x51, 0x9b, 0x5c, 0x1c, 0x9f, 0xe4, - 0x6c, 0x7b, 0xe0, 0x7a, 0x3d, 0x04, 0x76, 0x36, 0x34, 0xb2, 0x3e, 0x02, 0x3b, 0x13, 0x5a, 0x81, - 0x22, 0xb0, 0xfb, 0x41, 0xe0, 0x51, 0xc2, 0x8b, 0x08, 0xec, 0xba, 0xd1, 0x57, 0x2c, 0x40, 0x7b, - 0x69, 0xa0, 0xbf, 0x8a, 0x91, 0x94, 0x4f, 0x66, 0xfa, 0xf8, 0xf0, 0xf0, 0xd0, 0xda, 0xa9, 0x35, - 0xb6, 0x9a, 0xd5, 0x46, 0xad, 0xde, 0xb0, 0x9e, 0x88, 0x3e, 0x16, 0x70, 0x2b, 0x89, 0x9d, 0xf4, - 0x99, 0x94, 0xf1, 0x0f, 0x21, 0x11, 0xc4, 0xa7, 0x8a, 0x0a, 0x99, 0xf3, 0x18, 0xe8, 0x38, 0x93, - 0x26, 0xb8, 0x32, 0xed, 0xc7, 0xf4, 0xc5, 0xe3, 0x9a, 0x7b, 0xb2, 0x73, 0x3f, 0xc2, 0xc3, 0xbb, - 0x72, 0xae, 0xba, 0x46, 0xd8, 0x92, 0x1f, 0xb6, 0x38, 0x51, 0xe8, 0xd1, 0xbb, 0xaa, 0x1f, 0x38, - 0x05, 0x30, 0xcb, 0xf4, 0x20, 0x88, 0x08, 0x10, 0x11, 0xac, 0x18, 0x22, 0xa0, 0x3c, 0xf2, 0xa9, - 0x18, 0xc9, 0x80, 0x02, 0xa8, 0xa0, 0x95, 0xe3, 0xda, 0x43, 0x1e, 0xf9, 0x39, 0x44, 0x05, 0xca, - 0xb8, 0x27, 0x80, 0x89, 0xc7, 0x40, 0xa9, 0xea, 0x7a, 0xc1, 0x6d, 0x75, 0xdc, 0x12, 0x39, 0xbf, - 0xac, 0x7b, 0x69, 0xb0, 0x32, 0x8d, 0x34, 0x97, 0x78, 0x12, 0xad, 0x34, 0x94, 0xc9, 0x68, 0xa5, - 0xa1, 0x95, 0x56, 0xb2, 0x95, 0x76, 0x87, 0x86, 0x57, 0x21, 0xc3, 0xeb, 0x0e, 0x6d, 0xa9, 0x95, - 0xc6, 0x19, 0x3e, 0xb1, 0xab, 0x64, 0x9c, 0xe8, 0x9d, 0x1b, 0x5f, 0x4c, 0x0f, 0x82, 0x7a, 0x1b, - 0xf5, 0xf6, 0x8a, 0xe9, 0xed, 0xfc, 0xdb, 0xfb, 0x89, 0xee, 0xde, 0xc9, 0xe7, 0x12, 0x53, 0x54, - 0xf0, 0xdc, 0xba, 0xb4, 0xf2, 0xb5, 0x56, 0xdd, 0x25, 0x55, 0x77, 0xaf, 0x7a, 0x74, 0xfd, 0xa3, - 0xf1, 0xb0, 0xd1, 0x7d, 0xfa, 0xf3, 0xe6, 0x8f, 0xf6, 0x43, 0x05, 0x05, 0x6e, 0x99, 0x02, 0x37, - 0x0c, 0x84, 0xaa, 0xca, 0x90, 0xd2, 0x02, 0xf1, 0x07, 0x53, 0x63, 0xa0, 0xb8, 0x45, 0x71, 0xbb, - 0x62, 0xe2, 0x96, 0x39, 0x94, 0x2b, 0xa6, 0xee, 0x0b, 0x46, 0x20, 0xb4, 0x73, 0x5c, 0x7b, 0x3c, - 0xbe, 0xf5, 0x47, 0x22, 0x0b, 0x6c, 0x9b, 0xc9, 0x8b, 0x1c, 0x5e, 0xfe, 0x71, 0x78, 0xfe, 0xf9, - 0xf0, 0xf2, 0xdb, 0x45, 0xef, 0xf0, 0xf0, 0x20, 0xef, 0xde, 0xf9, 0x42, 0xbc, 0x88, 0xca, 0xdc, - 0x1a, 0xa0, 0x98, 0x45, 0xf5, 0xe4, 0x7d, 0x92, 0xd7, 0xf8, 0xf6, 0xe7, 0xe7, 0xff, 0x7e, 0x3e, - 0xfb, 0xeb, 0x73, 0x01, 0xbb, 0xe0, 0xfd, 0x72, 0xbc, 0x48, 0xbd, 0xf6, 0xe9, 0xe3, 0x2a, 0xbc, - 0xc5, 0x8a, 0xbc, 0xc6, 0xe9, 0x2a, 0xbc, 0xc5, 0x2a, 0x2c, 0x45, 0xa3, 0xbd, 0x22, 0xe7, 0x62, - 0x15, 0x76, 0x54, 0x6b, 0x25, 0x4e, 0x77, 0xbb, 0xd8, 0x5b, 0xe4, 0xba, 0xf2, 0x7a, 0xc9, 0x80, - 0x11, 0x44, 0xbb, 0x46, 0x6f, 0x1a, 0x50, 0x34, 0x88, 0xa1, 0x6b, 0x62, 0xf8, 0xcc, 0x8f, 0x65, - 0x72, 0x9a, 0x48, 0x73, 0xc5, 0x90, 0x52, 0x35, 0xec, 0x4e, 0xb2, 0x59, 0x26, 0x3f, 0x67, 0x4a, - 0x49, 0x48, 0x6f, 0x7b, 0x40, 0xa5, 0x2d, 0x58, 0x38, 0x5e, 0xdd, 0xca, 0x9e, 0xe3, 0x48, 0xeb, - 0x64, 0xef, 0x93, 0x25, 0xa9, 0x52, 0x8c, 0x0f, 0xa4, 0xa5, 0x02, 0x8b, 0x71, 0x87, 0xdd, 0x30, - 0x27, 0x22, 0x9e, 0x75, 0x38, 0xbe, 0xe9, 0x15, 0x7f, 0x7c, 0xc0, 0x9c, 0xa6, 0x5c, 0x1d, 0x03, - 0xc9, 0x57, 0xc2, 0x94, 0x5b, 0xc2, 0x40, 0xf2, 0xac, 0xd9, 0x15, 0xe9, 0x85, 0x85, 0xb2, 0x2c, - 0x66, 0x36, 0x4d, 0x81, 0x6c, 0x8b, 0xd7, 0xce, 0xe7, 0x45, 0x48, 0x6d, 0xe6, 0xde, 0x5b, 0x6a, - 0x48, 0x2d, 0x6f, 0x54, 0xc4, 0xca, 0x4a, 0x6f, 0x63, 0xa5, 0x67, 0x32, 0x3e, 0xb5, 0xb7, 0x43, - 0x66, 0x0f, 0xaf, 0xb8, 0x1a, 0x32, 0x39, 0xf5, 0x1f, 0x7d, 0xea, 0x05, 0x7c, 0x90, 0x37, 0xaa, - 0x2f, 0x27, 0x0d, 0x53, 0xf8, 0x0c, 0xeb, 0x38, 0xcb, 0xfa, 0xce, 0xb4, 0xae, 0xb3, 0xad, 0xfd, - 0x8c, 0x6b, 0x3f, 0xeb, 0x5a, 0xcf, 0x7c, 0x31, 0x54, 0x94, 0x13, 0x11, 0xe6, 0xa7, 0x75, 0x66, - 0xf6, 0x4b, 0xfe, 0xe4, 0x92, 0x19, 0xd5, 0xb7, 0x5d, 0x60, 0x0c, 0xf3, 0xc9, 0x26, 0xf9, 0x17, - 0xea, 0x61, 0xe9, 0xbd, 0xfc, 0xb7, 0x43, 0xca, 0x17, 0xe9, 0xe0, 0x1f, 0xad, 0x89, 0xba, 0x0f, - 0xa9, 0xf5, 0x3f, 0xd6, 0xbf, 0x99, 0xab, 0x52, 0x1c, 0xb7, 0x2f, 0x7d, 0x62, 0x3b, 0xff, 0x5e, - 0x32, 0x79, 0x94, 0xcc, 0xd7, 0x92, 0x4b, 0xa3, 0x37, 0x26, 0x74, 0x11, 0x46, 0xe8, 0x33, 0xbd, - 0xad, 0xc9, 0x26, 0x25, 0xb6, 0x62, 0x37, 0xd4, 0x8a, 0xd7, 0x24, 0x41, 0x00, 0x8f, 0x6a, 0x9d, - 0xc9, 0x14, 0x9a, 0x17, 0x5d, 0x2d, 0x4d, 0x9b, 0xe8, 0xf9, 0x46, 0x72, 0xa6, 0x26, 0xe4, 0x7d, - 0xf1, 0x91, 0x75, 0xef, 0xa9, 0x99, 0x7d, 0x35, 0xdf, 0x5c, 0x17, 0xba, 0xe7, 0xc3, 0xaa, 0x45, - 0xa8, 0x68, 0xb6, 0xcf, 0xaf, 0x0d, 0x97, 0xe9, 0xc8, 0x5f, 0xd5, 0x22, 0xb5, 0xbd, 0xe7, 0x29, - 0x6f, 0x31, 0xff, 0x4b, 0xcf, 0x21, 0x70, 0x2a, 0x52, 0x65, 0xc9, 0x78, 0x7c, 0x2c, 0xb3, 0xa6, - 0xe6, 0x4f, 0x70, 0xcc, 0x5d, 0xaf, 0xa0, 0x81, 0xf5, 0x0a, 0x74, 0xca, 0x28, 0xac, 0x57, 0x80, - 0xf5, 0x0a, 0x90, 0x66, 0xc2, 0x7a, 0x05, 0xba, 0x4d, 0xc9, 0x32, 0xea, 0x15, 0x60, 0xda, 0xff, - 0xcb, 0x17, 0x63, 0xda, 0xbf, 0x16, 0xa5, 0xbe, 0x3e, 0x72, 0x0f, 0x13, 0x4a, 0x5e, 0x96, 0x7b, - 0x98, 0x50, 0x32, 0xd7, 0x4c, 0x63, 0xda, 0x7f, 0x89, 0x5c, 0x14, 0xa6, 0xfd, 0x9b, 0xd4, 0xfe, - 0x76, 0x10, 0xf1, 0x64, 0xb6, 0x72, 0xeb, 0xfd, 0x74, 0x84, 0xf5, 0xf0, 0x58, 0xa3, 0x4a, 0x05, - 0xa3, 0x52, 0x73, 0x7b, 0xac, 0x19, 0xaf, 0xee, 0xd4, 0x1a, 0xf5, 0x7f, 0xaa, 0x49, 0x93, 0x51, - 0x59, 0xdc, 0x69, 0xfd, 0x7c, 0x40, 0x74, 0x14, 0xe7, 0x3f, 0x4a, 0x26, 0x35, 0x22, 0x0c, 0x47, - 0x71, 0xae, 0xa3, 0x56, 0x50, 0xb9, 0x2d, 0xdc, 0x51, 0x3c, 0x56, 0x33, 0x9d, 0x96, 0x06, 0x57, - 0xf1, 0x4e, 0x81, 0x21, 0xce, 0x09, 0x1f, 0xd0, 0x42, 0xf1, 0xf7, 0x56, 0xe1, 0x78, 0xca, 0xe4, - 0x41, 0x4e, 0x19, 0xd7, 0xe2, 0x4f, 0xb2, 0xd2, 0xb4, 0x82, 0xfc, 0x92, 0x61, 0x66, 0xbc, 0x23, - 0x41, 0xec, 0x18, 0x9c, 0x1d, 0xb0, 0x01, 0x53, 0x52, 0xe3, 0xc0, 0x9f, 0xe9, 0x80, 0x28, 0x76, - 0x13, 0x3f, 0x6b, 0x52, 0x47, 0xa2, 0xf0, 0xa8, 0x0f, 0x1a, 0x5c, 0x5c, 0xa7, 0xe4, 0x4e, 0xff, - 0x52, 0xd4, 0x77, 0x5a, 0xad, 0xce, 0x76, 0xab, 0x55, 0xdb, 0x6e, 0x6e, 0xd7, 0x76, 0xdb, 0xed, - 0x7a, 0x27, 0x4f, 0x12, 0x0b, 0xf4, 0xd5, 0x59, 0x90, 0x2f, 0xf0, 0xba, 0xac, 0xd8, 0x8e, 0xf7, - 0xb9, 0xd0, 0x89, 0x2d, 0xec, 0x2a, 0x15, 0x22, 0x10, 0x7a, 0xb0, 0xc9, 0xd4, 0x70, 0x88, 0x4c, - 0x10, 0x99, 0x20, 0x32, 0x41, 0x64, 0x82, 0xc8, 0x04, 0x91, 0x09, 0x22, 0x13, 0x44, 0x26, 0x59, - 0x91, 0x89, 0x2b, 0x48, 0x92, 0xd7, 0xa3, 0x93, 0x3a, 0x79, 0x3e, 0x26, 0x62, 0x14, 0xc4, 0x28, - 0x88, 0x51, 0x10, 0xa3, 0x20, 0x46, 0x41, 0x8c, 0x82, 0x18, 0x05, 0x31, 0x4a, 0x56, 0x8c, 0xf2, - 0xff, 0x27, 0xfd, 0x3e, 0x15, 0x3a, 0x11, 0xca, 0xd3, 0x11, 0x11, 0x9f, 0x20, 0x3e, 0x41, 0x7c, - 0x82, 0xf8, 0x04, 0xf1, 0x09, 0xe2, 0x13, 0xc4, 0x27, 0x88, 0x4f, 0xb2, 0xe2, 0x13, 0x9f, 0xd8, - 0x93, 0xc2, 0xfc, 0x3a, 0x41, 0xca, 0x0b, 0xc3, 0x22, 0x52, 0x41, 0xa4, 0x82, 0x48, 0x05, 0x91, - 0x0a, 0x22, 0x15, 0x44, 0x2a, 0x88, 0x54, 0x10, 0xa9, 0xe4, 0x41, 0x2a, 0x21, 0x89, 0x24, 0xd5, - 0x8d, 0x53, 0x9e, 0x0c, 0x8a, 0x28, 0x05, 0x51, 0x0a, 0xa2, 0x14, 0x44, 0x29, 0x88, 0x52, 0x10, - 0xa5, 0x20, 0x4a, 0x41, 0x94, 0x92, 0x15, 0xa5, 0x04, 0x37, 0x54, 0x48, 0xf6, 0x7f, 0x5a, 0x41, - 0xca, 0xf3, 0x31, 0x11, 0xa3, 0x20, 0x46, 0x41, 0x8c, 0x82, 0x18, 0x05, 0x31, 0x0a, 0x62, 0x14, - 0xc4, 0x28, 0x88, 0x51, 0x32, 0x4d, 0x72, 0x10, 0x29, 0xcd, 0x09, 0xc7, 0x33, 0x23, 0x22, 0x3e, - 0x41, 0x7c, 0x82, 0xf8, 0x04, 0xf1, 0x09, 0xe2, 0x13, 0xc4, 0x27, 0x88, 0x4f, 0x10, 0x9f, 0x64, - 0xc6, 0x27, 0x26, 0x82, 0x52, 0x5e, 0x19, 0x17, 0xb1, 0x0a, 0x62, 0x15, 0xc4, 0x2a, 0x88, 0x55, - 0x10, 0xab, 0x20, 0x56, 0x41, 0xac, 0x82, 0x58, 0x25, 0x17, 0x56, 0xd1, 0x1b, 0x96, 0xf2, 0xe2, - 0xa8, 0x88, 0x53, 0x10, 0xa7, 0x20, 0x4e, 0x41, 0x9c, 0x82, 0x38, 0x05, 0x71, 0x0a, 0xe2, 0x94, - 0x75, 0xc6, 0x29, 0x4b, 0xdd, 0x2a, 0x5a, 0x43, 0x47, 0xa6, 0xa4, 0xd1, 0xd1, 0x87, 0x9c, 0x95, - 0x9e, 0x47, 0x0f, 0xa1, 0x44, 0x64, 0x2b, 0x3e, 0x29, 0xa0, 0x3e, 0xb9, 0xc5, 0xb7, 0x49, 0xd3, - 0xaf, 0x6f, 0xfb, 0x93, 0xc1, 0x97, 0xa0, 0x28, 0xb6, 0x13, 0x85, 0x1e, 0xbd, 0xab, 0xfa, 0x81, - 0x53, 0xa0, 0x1f, 0xc6, 0xf4, 0x20, 0xd8, 0x6d, 0xc2, 0x1c, 0x02, 0xc4, 0xd2, 0xd8, 0x0b, 0xe9, - 0x36, 0x41, 0x79, 0xe4, 0x53, 0x41, 0x72, 0xb6, 0x1e, 0x4c, 0xab, 0xbf, 0xb7, 0x72, 0x5c, 0x7b, - 0xc8, 0x23, 0xdf, 0x68, 0xa3, 0xfb, 0x0c, 0xa2, 0x82, 0xba, 0x2e, 0x4d, 0x9a, 0x1a, 0x56, 0x65, - 0x48, 0x69, 0x81, 0xae, 0x5c, 0xcf, 0x07, 0x42, 0x91, 0x81, 0x22, 0x63, 0xc5, 0x44, 0x46, 0xc4, - 0xb8, 0x6a, 0x36, 0x0a, 0x48, 0x8b, 0x3c, 0x6d, 0xb9, 0x8a, 0x59, 0x7a, 0x05, 0x4c, 0x5e, 0x1d, - 0x96, 0x9d, 0x2e, 0x8b, 0x4e, 0xbb, 0xad, 0xa0, 0xcf, 0x46, 0x28, 0xd2, 0x0f, 0x58, 0x87, 0xc5, - 0x96, 0x4e, 0x71, 0xab, 0xb1, 0xdb, 0xda, 0xed, 0x6c, 0x37, 0x76, 0xdb, 0xab, 0x3b, 0xd7, 0x6b, - 0xd4, 0xd8, 0x86, 0x72, 0xd2, 0xf7, 0x68, 0xd5, 0xf5, 0x82, 0xdb, 0x89, 0x7f, 0xb9, 0x80, 0x72, - 0x7e, 0x61, 0xb0, 0x32, 0x1b, 0xdc, 0x25, 0xcb, 0x8e, 0x1d, 0xee, 0x10, 0x40, 0xac, 0x37, 0x80, - 0xc0, 0x0e, 0x77, 0xa6, 0x41, 0xcb, 0x6c, 0x87, 0xbb, 0x3b, 0x6c, 0x5a, 0x97, 0xe3, 0x04, 0x4e, - 0xcf, 0x1f, 0xaa, 0xeb, 0x39, 0x26, 0x6f, 0x78, 0x9b, 0xf8, 0x57, 0x89, 0xe3, 0x08, 0x2a, 0x0b, - 0x74, 0xa3, 0x7b, 0x36, 0x0e, 0x2a, 0x41, 0x54, 0x82, 0x2b, 0xa6, 0x04, 0xf3, 0x6f, 0xef, 0x27, - 0x8a, 0x70, 0x27, 0x5f, 0x8b, 0x6b, 0x45, 0x05, 0xcf, 0xad, 0x98, 0x2a, 0x5f, 0x6b, 0xd5, 0x5d, - 0x52, 0x75, 0xf7, 0xaa, 0x47, 0xd7, 0x3f, 0x1a, 0x0f, 0x1b, 0xdd, 0xa7, 0x3f, 0x6f, 0xfe, 0x68, - 0x3f, 0x54, 0x40, 0x4a, 0x2f, 0x2d, 0xa2, 0x0b, 0xe5, 0x16, 0xca, 0x2d, 0x94, 0x5b, 0x28, 0xb7, - 0x4a, 0x94, 0x5b, 0x69, 0xbb, 0x7e, 0xa7, 0xaa, 0xc5, 0xe7, 0xf9, 0xca, 0x78, 0x28, 0xcd, 0x50, - 0x9a, 0xad, 0x98, 0x34, 0x43, 0xf7, 0xe7, 0x73, 0x01, 0x12, 0x06, 0x42, 0x15, 0x75, 0x82, 0xbe, - 0x3c, 0x1c, 0x8a, 0x0f, 0x14, 0x1f, 0x2b, 0x26, 0x3e, 0x98, 0x43, 0xb9, 0x62, 0xea, 0x5e, 0x50, - 0xb7, 0x88, 0xf8, 0xc8, 0xe1, 0xaa, 0xaa, 0x1c, 0x8f, 0x6f, 0xfd, 0x91, 0x48, 0x5a, 0x3c, 0x30, - 0xfe, 0xf0, 0xf2, 0x8f, 0xc3, 0xf3, 0xcf, 0x87, 0x97, 0xdf, 0x2e, 0x7a, 0x87, 0x87, 0x07, 0x79, - 0xf7, 0x4e, 0xe2, 0x83, 0x93, 0x85, 0xe2, 0x71, 0x0b, 0x32, 0x8c, 0x93, 0xf7, 0x49, 0x5e, 0xe3, - 0xdb, 0x9f, 0x9f, 0xff, 0xfb, 0xf9, 0xec, 0xaf, 0xcf, 0x95, 0x45, 0x78, 0x35, 0xb5, 0xbe, 0x48, - 0xbd, 0xf6, 0xe9, 0xe3, 0x2a, 0xbc, 0xc5, 0x8a, 0xbc, 0xc6, 0xe9, 0x2a, 0xbc, 0xc5, 0x2a, 0x2c, - 0x45, 0xa3, 0xbd, 0x22, 0xe7, 0x62, 0x15, 0x76, 0x54, 0x6b, 0x25, 0x4e, 0x77, 0xbb, 0xd8, 0x5b, - 0xe4, 0xba, 0xf2, 0xda, 0x34, 0x30, 0x32, 0x62, 0x34, 0xe8, 0xb0, 0x14, 0xd0, 0x3c, 0x40, 0xf3, - 0x00, 0xcd, 0x03, 0x34, 0x0f, 0xd0, 0x3c, 0x40, 0xf3, 0x00, 0xcd, 0x03, 0x34, 0x0f, 0xd0, 0x3c, - 0x40, 0xf3, 0x00, 0xcd, 0x83, 0xe5, 0x35, 0x0f, 0xde, 0x69, 0x5c, 0xab, 0xca, 0x5e, 0x34, 0x88, - 0x11, 0x60, 0x62, 0x3f, 0xcc, 0x0f, 0x09, 0x72, 0x5a, 0x1a, 0x1f, 0x02, 0xbb, 0xca, 0xdc, 0xee, - 0x54, 0x82, 0xec, 0xb3, 0x5f, 0x7c, 0x18, 0xa1, 0xd0, 0x6e, 0x9a, 0x2d, 0x3b, 0xfe, 0x39, 0x49, - 0x9a, 0xcd, 0x1e, 0x26, 0x2e, 0x6d, 0xc1, 0xc2, 0x71, 0xb6, 0x6f, 0x65, 0xcf, 0x71, 0xa4, 0x75, - 0xb2, 0xf7, 0xc9, 0x92, 0x54, 0x29, 0xc6, 0x07, 0xd2, 0x52, 0x81, 0xc5, 0xb8, 0xc3, 0x6e, 0x98, - 0x13, 0x11, 0xcf, 0x9a, 0xa4, 0xcf, 0x5e, 0xf1, 0xc7, 0xe7, 0xcb, 0x69, 0x10, 0xd5, 0x81, 0x19, - 0x44, 0x1e, 0x19, 0xa0, 0x41, 0xf4, 0x82, 0x41, 0x14, 0xcf, 0xcb, 0x92, 0x19, 0x44, 0x07, 0x4c, - 0xe4, 0x5b, 0x6e, 0x32, 0x18, 0x08, 0x3a, 0x20, 0x8a, 0x56, 0x99, 0x53, 0xdc, 0x18, 0x79, 0x32, - 0x5a, 0xce, 0xc9, 0x7e, 0x76, 0x3e, 0x2f, 0x42, 0x6a, 0x33, 0xf7, 0xde, 0x52, 0x43, 0x6a, 0x79, - 0xc1, 0x80, 0xd9, 0xc4, 0xb3, 0xd2, 0xdb, 0x58, 0xe9, 0x99, 0x8c, 0x4f, 0xed, 0xed, 0x90, 0xd9, - 0xc3, 0x2b, 0xae, 0x86, 0x4c, 0x4e, 0xfd, 0x47, 0x9f, 0x7a, 0x01, 0x1f, 0x60, 0x2d, 0xa1, 0x22, - 0x67, 0x5a, 0xd7, 0xd9, 0xd6, 0x7e, 0xc6, 0xb5, 0x9f, 0x75, 0xad, 0x67, 0xbe, 0x18, 0xb6, 0x58, - 0x7c, 0x2d, 0x21, 0x8f, 0x12, 0x37, 0x1f, 0x41, 0x32, 0xa3, 0xfa, 0xb6, 0x0b, 0x8c, 0xd1, 0x4b, - 0x0b, 0x6b, 0xcc, 0x81, 0x13, 0x98, 0xdb, 0x4d, 0x6a, 0x60, 0xac, 0x44, 0x61, 0x12, 0x1d, 0xd9, - 0x2e, 0xb7, 0x43, 0xca, 0x17, 0x99, 0xe8, 0x32, 0x5a, 0x13, 0x75, 0x1f, 0x52, 0xeb, 0x7f, 0xac, - 0x7f, 0x33, 0x57, 0xa5, 0x30, 0x6e, 0x5f, 0xfa, 0xc4, 0x76, 0xfe, 0xbd, 0x64, 0xf2, 0x28, 0x99, - 0xaf, 0x25, 0x97, 0x46, 0x6f, 0x4c, 0xe8, 0x42, 0x52, 0x85, 0x9f, 0xea, 0x6d, 0x4d, 0x96, 0x1d, - 0x49, 0x0a, 0x36, 0x58, 0xf1, 0x9a, 0x24, 0x08, 0xe0, 0x51, 0xad, 0x33, 0x99, 0x42, 0xf3, 0xa2, - 0xab, 0xa5, 0x69, 0x13, 0x3d, 0xdf, 0x48, 0xce, 0xd4, 0x84, 0x68, 0x28, 0x9e, 0xa5, 0x7b, 0x4f, - 0xcd, 0xec, 0xab, 0xf9, 0xe6, 0x7a, 0x41, 0x85, 0xa6, 0xc0, 0x67, 0x6a, 0xcd, 0xf5, 0xcd, 0xeb, - 0x79, 0xcd, 0xf3, 0x7c, 0x05, 0xab, 0xb4, 0x15, 0xaa, 0x9a, 0x6f, 0x17, 0xbc, 0xfd, 0xce, 0x73, - 0xc8, 0x9b, 0x8a, 0xbc, 0x65, 0xca, 0x1e, 0x52, 0xa7, 0x7a, 0xe3, 0x91, 0xf9, 0x5f, 0x37, 0x95, - 0x20, 0x4f, 0x2f, 0x9f, 0x73, 0x7e, 0xb3, 0x19, 0xec, 0x99, 0x41, 0x7e, 0x1e, 0x50, 0x3f, 0xad, - 0x4f, 0x33, 0xbc, 0x4a, 0x11, 0x01, 0x57, 0x18, 0xa5, 0x17, 0x96, 0x59, 0xcf, 0xf5, 0x5e, 0xf2, - 0xe2, 0x0b, 0xa2, 0xc4, 0xb2, 0x9a, 0xd8, 0x15, 0x7b, 0xb2, 0x2b, 0x72, 0xd2, 0x62, 0xe3, 0xeb, - 0xd7, 0x83, 0x6b, 0xca, 0xb8, 0xa5, 0xd7, 0x87, 0x6c, 0xca, 0xb6, 0xe5, 0x97, 0x9d, 0x6d, 0xb2, - 0x6d, 0x2a, 0x65, 0x36, 0x49, 0xfe, 0x0b, 0x6c, 0xf8, 0x38, 0x18, 0x92, 0x3b, 0x05, 0x0e, 0x11, - 0xb2, 0x3b, 0xf9, 0x0e, 0x19, 0x74, 0x7a, 0x27, 0xe2, 0xc5, 0x4c, 0x93, 0x54, 0xd7, 0xec, 0x16, - 0x18, 0x63, 0xfc, 0x3a, 0x0b, 0x2f, 0x13, 0x3d, 0x99, 0x94, 0x78, 0x2b, 0xe4, 0x67, 0xaf, 0x5f, - 0x9a, 0x9e, 0x8e, 0x86, 0xa1, 0xf4, 0x54, 0xd3, 0xd6, 0x37, 0x5d, 0xe9, 0x83, 0xe9, 0xac, 0xae, - 0x9d, 0x0e, 0x9a, 0x96, 0x76, 0x7e, 0xaf, 0x77, 0x5c, 0x53, 0xf5, 0x9c, 0x1f, 0x37, 0x91, 0xee, - 0xba, 0xce, 0x1a, 0x88, 0x99, 0xd9, 0x25, 0xd3, 0x58, 0x85, 0x7b, 0x66, 0xc9, 0x5a, 0xb5, 0xdd, - 0x16, 0xae, 0x5a, 0x61, 0xba, 0x43, 0xef, 0x28, 0xd7, 0xef, 0x16, 0xb8, 0xf7, 0x34, 0xca, 0xe6, - 0x7f, 0x18, 0xff, 0x47, 0xaf, 0x6c, 0xae, 0xef, 0x68, 0x18, 0xab, 0x68, 0xf2, 0xfb, 0xcc, 0x80, - 0x1b, 0xad, 0xda, 0xee, 0xd7, 0x5a, 0xb5, 0x75, 0xfd, 0xb3, 0x55, 0xfb, 0x5a, 0xab, 0xee, 0x5c, - 0x7f, 0xad, 0x55, 0x77, 0xaf, 0x7f, 0x7e, 0xad, 0x57, 0x9b, 0xa3, 0x8f, 0x3f, 0x9a, 0x0f, 0xf1, - 0x4f, 0xbb, 0xe3, 0x9f, 0xea, 0xef, 0x1b, 0xe3, 0x9f, 0x37, 0xaf, 0xae, 0xb6, 0x36, 0x0a, 0x5c, - 0xfe, 0xf3, 0xea, 0xea, 0xb7, 0xcd, 0xca, 0xa2, 0x37, 0x5c, 0xd9, 0xe5, 0xe8, 0x73, 0x22, 0x31, - 0x0d, 0xde, 0x99, 0x74, 0xac, 0x42, 0x5e, 0x1a, 0x03, 0x47, 0x2d, 0x65, 0xfe, 0x92, 0xfa, 0x02, - 0xd6, 0xff, 0x58, 0xff, 0xde, 0xdb, 0xdf, 0x3f, 0xbc, 0xb8, 0xf8, 0xb7, 0x8e, 0xc3, 0xa7, 0x91, - 0x70, 0xb7, 0xf4, 0x7b, 0x6f, 0x8c, 0x59, 0x1d, 0x2f, 0x5a, 0x1f, 0xaf, 0x4f, 0xf4, 0x52, 0xb4, - 0xec, 0xd0, 0xe9, 0xd5, 0x99, 0xd9, 0x64, 0x7b, 0x89, 0x05, 0x6f, 0x7d, 0x39, 0xd9, 0xfb, 0x6c, - 0x11, 0x29, 0xd9, 0x80, 0x53, 0xc7, 0x52, 0xc1, 0x53, 0xef, 0x83, 0xd4, 0xb5, 0x9c, 0x9a, 0x77, - 0x9d, 0x65, 0xd4, 0xdd, 0x63, 0x7c, 0x13, 0xce, 0x6c, 0xc4, 0x39, 0x17, 0x63, 0x49, 0x20, 0xcd, - 0xc3, 0x5a, 0x68, 0x98, 0x82, 0x8d, 0x49, 0xd2, 0x71, 0xee, 0x07, 0x81, 0xaa, 0x06, 0x76, 0xd5, - 0x0e, 0xfc, 0x50, 0x50, 0x29, 0xa9, 0x53, 0xf5, 0x28, 0x71, 0xb3, 0xd7, 0xb8, 0xc8, 0x3f, 0x81, - 0x79, 0x3a, 0xcd, 0x3d, 0x95, 0x8d, 0xc5, 0x19, 0xc3, 0x67, 0xe3, 0x21, 0x69, 0x88, 0xa4, 0x21, - 0x92, 0x86, 0x79, 0xf8, 0xb1, 0xf8, 0xf8, 0x54, 0x55, 0x3c, 0xa6, 0x06, 0xf6, 0xb0, 0x00, 0x5f, - 0x90, 0xb3, 0x52, 0x0f, 0x8a, 0xe5, 0x42, 0x62, 0x99, 0x27, 0x6c, 0x89, 0x26, 0x2f, 0xce, 0xf4, - 0x60, 0x28, 0x90, 0x51, 0x20, 0xa3, 0x40, 0xce, 0xb8, 0x63, 0xd0, 0x8b, 0xf3, 0x9a, 0x96, 0x42, - 0x2f, 0xce, 0xbc, 0x0f, 0x86, 0x5e, 0x9c, 0x27, 0x9b, 0x08, 0xbd, 0x38, 0xe8, 0xc5, 0xd1, 0x49, - 0x56, 0x58, 0xe8, 0xc5, 0x41, 0x2f, 0x0e, 0x7a, 0x71, 0x96, 0x93, 0x63, 0x5b, 0x2f, 0x2f, 0xce, - 0xe5, 0xf9, 0x9f, 0x9f, 0xff, 0x8b, 0x4e, 0x1c, 0x0d, 0x03, 0xff, 0xda, 0x89, 0x33, 0x9e, 0xe7, - 0xd5, 0xf7, 0xe1, 0x7c, 0x4e, 0x94, 0xee, 0xc8, 0x6d, 0xc0, 0xa4, 0x75, 0x43, 0x3c, 0xe6, 0x58, - 0x6e, 0x20, 0xe2, 0xa9, 0xe6, 0xdf, 0xad, 0x64, 0x3e, 0xd0, 0x97, 0x63, 0x76, 0x2f, 0xce, 0xec, - 0xc7, 0x8c, 0x8b, 0x82, 0x3e, 0x1d, 0x24, 0x0f, 0xcb, 0x22, 0x0f, 0x93, 0x1d, 0x98, 0x50, 0x35, - 0xb2, 0x38, 0x79, 0x38, 0x3d, 0x18, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, - 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, 0x87, 0xab, 0x48, 0x1e, 0x26, 0xb2, 0x59, - 0x24, 0xa2, 0x10, 0xf9, 0xc3, 0x5f, 0xf1, 0x87, 0x57, 0x57, 0x5b, 0x05, 0x06, 0xa8, 0xe0, 0x86, - 0x43, 0xb6, 0x7a, 0xad, 0xd8, 0xea, 0x65, 0xdb, 0x70, 0xfa, 0x85, 0xdc, 0xae, 0x86, 0xb1, 0xb4, - 0x40, 0x75, 0x03, 0x18, 0x34, 0xad, 0xf6, 0xa1, 0x04, 0xe3, 0x03, 0x9d, 0x9c, 0x9d, 0xc6, 0x43, - 0x6b, 0xec, 0xf0, 0x2e, 0x85, 0xca, 0x58, 0x0e, 0x29, 0xa0, 0x47, 0x1a, 0x68, 0xc6, 0xdc, 0xb8, - 0xd1, 0xb5, 0x6f, 0xf4, 0xab, 0xab, 0xdf, 0x7e, 0x16, 0xd8, 0x6d, 0x9b, 0x85, 0xf7, 0xfa, 0xa2, - 0xf1, 0x95, 0xe6, 0x8d, 0x8e, 0xce, 0xe2, 0xb9, 0xf6, 0xdd, 0x09, 0x93, 0x6a, 0x4f, 0x29, 0x51, - 0x8c, 0x7d, 0x3b, 0x65, 0xfc, 0xd0, 0xa3, 0x3e, 0xe5, 0x45, 0x6d, 0xd9, 0xd8, 0x90, 0x9f, 0x1a, - 0xa9, 0xbe, 0xd3, 0x6a, 0x75, 0xb6, 0x5b, 0xad, 0xda, 0x76, 0x73, 0xbb, 0xb6, 0xdb, 0x6e, 0xd7, - 0x3b, 0x79, 0x1a, 0x94, 0xa4, 0x83, 0x9f, 0x09, 0x87, 0x0a, 0xea, 0x7c, 0xbc, 0xaf, 0x74, 0x2d, - 0x1e, 0x79, 0x1e, 0xba, 0xe5, 0x35, 0x09, 0x6f, 0x74, 0xcb, 0xa3, 0x5b, 0xde, 0x74, 0x6a, 0xa5, - 0xe7, 0x05, 0xb7, 0xd4, 0x49, 0x5c, 0xc0, 0xd2, 0xf2, 0xc9, 0xbd, 0xd5, 0xa7, 0x96, 0x4c, 0x6a, - 0x69, 0x33, 0xfa, 0xdc, 0x17, 0x3c, 0x5d, 0xdb, 0x7e, 0x0b, 0x5d, 0xf4, 0xe5, 0xa4, 0x5b, 0xe6, - 0x5f, 0x20, 0x74, 0xd7, 0x97, 0xa8, 0x87, 0x56, 0xc9, 0x5d, 0x6f, 0xb4, 0x28, 0x5c, 0xc1, 0x89, - 0xd2, 0x52, 0x9b, 0x74, 0xba, 0xd6, 0xe7, 0x87, 0x71, 0xfd, 0xc4, 0x25, 0x68, 0xc7, 0x38, 0xaa, - 0x99, 0x9a, 0xbb, 0x10, 0x64, 0xae, 0x36, 0x27, 0x45, 0xeb, 0x40, 0x36, 0xb0, 0x0e, 0xe4, 0x42, - 0x15, 0x08, 0xd6, 0x81, 0x9c, 0x77, 0xd7, 0x60, 0x1d, 0x48, 0x0b, 0x83, 0x80, 0x34, 0x20, 0x32, - 0x0c, 0x02, 0x2a, 0x4a, 0x1d, 0x62, 0x10, 0xd0, 0xaf, 0xa6, 0x07, 0x83, 0x80, 0xb2, 0x0e, 0x8a, - 0x41, 0x40, 0x06, 0x78, 0x87, 0x69, 0xee, 0x10, 0x83, 0x80, 0xca, 0x59, 0x35, 0x0c, 0x02, 0xc2, - 0x98, 0x8c, 0x1c, 0x03, 0x62, 0x06, 0x21, 0x08, 0x8a, 0x08, 0xeb, 0x40, 0x2e, 0xd6, 0xce, 0x78, - 0xc9, 0xde, 0xc0, 0x3a, 0x90, 0x5a, 0x41, 0x03, 0xd6, 0x81, 0x9c, 0x7b, 0xe7, 0x61, 0x1d, 0xc8, - 0x32, 0x21, 0x0d, 0x30, 0x27, 0x04, 0x96, 0x4d, 0x44, 0x8e, 0x0d, 0x39, 0x36, 0x2c, 0x9b, 0x08, - 0xbb, 0x6c, 0x22, 0x56, 0x19, 0x44, 0xf9, 0x85, 0xf2, 0x6b, 0xad, 0xe4, 0x17, 0xfa, 0x08, 0x5e, - 0x13, 0xea, 0xe8, 0x23, 0x98, 0xf7, 0xc1, 0xd0, 0x47, 0xf0, 0x64, 0x13, 0xa1, 0x8f, 0x00, 0x7d, - 0x04, 0x3a, 0x4d, 0x61, 0x0b, 0x7d, 0x04, 0xe8, 0x23, 0x40, 0x1f, 0x81, 0x61, 0x06, 0x07, 0x7d, - 0x04, 0x6f, 0xf0, 0x43, 0x98, 0xce, 0x80, 0xe9, 0x0c, 0x58, 0x65, 0x70, 0x9e, 0x0d, 0x88, 0x55, - 0x06, 0x17, 0x01, 0x70, 0xd0, 0x63, 0x30, 0xbb, 0xaa, 0x58, 0x94, 0x0f, 0xb9, 0x36, 0xe4, 0xda, - 0x90, 0x6b, 0x43, 0xae, 0x0d, 0xb9, 0x36, 0xe4, 0xda, 0x90, 0x6b, 0x43, 0xae, 0x0d, 0xb9, 0xb6, - 0xac, 0xb2, 0x19, 0x8b, 0xf2, 0x61, 0x51, 0xbe, 0xb2, 0x36, 0x1c, 0x92, 0xbb, 0x58, 0x94, 0x6f, - 0x11, 0x1b, 0x0e, 0x8b, 0xf2, 0xe5, 0x99, 0x3c, 0x2c, 0xca, 0x87, 0x45, 0xf9, 0x34, 0x48, 0x03, - 0xcd, 0x98, 0x1b, 0x37, 0x3a, 0x16, 0xe5, 0xc3, 0xa2, 0x7c, 0x66, 0xee, 0x8f, 0x45, 0xf9, 0xb0, - 0x28, 0xdf, 0x5b, 0x63, 0xa1, 0x17, 0xbb, 0x80, 0x5a, 0x40, 0x2f, 0xb6, 0x19, 0x60, 0x80, 0x45, - 0xf9, 0x0a, 0x6d, 0x46, 0x2c, 0xca, 0xb7, 0x68, 0x8d, 0xbf, 0xf2, 0xde, 0xed, 0xf5, 0xaa, 0x61, - 0x37, 0x2a, 0xfd, 0x66, 0xaa, 0x84, 0xdd, 0x3b, 0x8d, 0x73, 0x98, 0x77, 0xee, 0xb4, 0xcf, 0x59, - 0x25, 0x53, 0x61, 0x3e, 0x11, 0xd9, 0x8a, 0x8f, 0xc5, 0xf3, 0xf1, 0x64, 0xe4, 0x6f, 0x87, 0xe3, - 0x91, 0xbf, 0x5d, 0x8c, 0x47, 0xfe, 0x32, 0xb7, 0x23, 0xfa, 0xed, 0x49, 0xfd, 0xf5, 0x37, 0xde, - 0x98, 0xee, 0xca, 0x5e, 0x34, 0x88, 0xa5, 0x15, 0x75, 0xe6, 0xc2, 0x4e, 0xf3, 0xad, 0x43, 0xaa, - 0xa0, 0x3e, 0x04, 0x76, 0x95, 0xb9, 0xdd, 0xa9, 0xd9, 0x7e, 0xf6, 0x8b, 0xf8, 0x67, 0xaa, 0x86, - 0xdd, 0xc9, 0xd4, 0xcf, 0x39, 0xd9, 0xcf, 0xd4, 0x6a, 0x65, 0xcf, 0x71, 0xc6, 0x19, 0xc6, 0x92, - 0x2a, 0xc5, 0xf8, 0x40, 0x5a, 0x2a, 0xb0, 0x18, 0x77, 0xd8, 0x0d, 0x73, 0x22, 0xe2, 0x59, 0x93, - 0x05, 0x98, 0x96, 0xb1, 0xf3, 0xde, 0x2b, 0x5b, 0xe5, 0xc3, 0xcc, 0xc1, 0x22, 0x79, 0x82, 0x43, - 0x0a, 0x04, 0x83, 0xe4, 0x55, 0xd9, 0x85, 0x83, 0x3d, 0x0a, 0x6b, 0xdd, 0x62, 0xc1, 0x1c, 0x7a, - 0x85, 0x53, 0xd6, 0x4a, 0x85, 0x95, 0xa7, 0x22, 0x25, 0x7f, 0xe9, 0xce, 0x9c, 0x92, 0xe9, 0xa5, - 0x43, 0x73, 0xc8, 0x6d, 0x2f, 0x90, 0x8c, 0x0f, 0x2c, 0x3b, 0xe0, 0x8a, 0x30, 0x4e, 0x45, 0x82, - 0x48, 0x46, 0xf1, 0x77, 0x29, 0xaa, 0x1e, 0xc3, 0x15, 0xfb, 0x8a, 0x3b, 0x44, 0x11, 0x2b, 0xe0, - 0xe9, 0x61, 0x9a, 0x0a, 0xc6, 0xdb, 0xb2, 0xac, 0xcb, 0x21, 0x95, 0xd4, 0x22, 0x82, 0x26, 0x83, - 0x48, 0x45, 0xb8, 0x43, 0x84, 0x73, 0xc5, 0x4f, 0x1a, 0xef, 0xad, 0xf4, 0xb1, 0xa5, 0xba, 0xf7, - 0x46, 0x11, 0x7e, 0x99, 0x31, 0x68, 0xe1, 0x0a, 0xa4, 0x35, 0xac, 0x40, 0xba, 0x50, 0xb4, 0xbc, - 0x90, 0x0a, 0xa4, 0x0b, 0x92, 0x0f, 0x05, 0x88, 0x8d, 0x7c, 0x44, 0x46, 0xb1, 0x3d, 0xca, 0xdc, - 0xae, 0xba, 0x0f, 0x13, 0xe3, 0x99, 0xb9, 0x2a, 0xd5, 0xc6, 0xfb, 0xd2, 0x27, 0xb6, 0xf3, 0xef, - 0x05, 0xef, 0xde, 0x02, 0x8c, 0x84, 0xb1, 0xbd, 0xfb, 0xc6, 0x84, 0x95, 0x12, 0x64, 0xab, 0x83, - 0x5a, 0x98, 0x2a, 0x99, 0x93, 0xc4, 0x5e, 0xc7, 0x73, 0xfd, 0xb4, 0x32, 0x8b, 0xc5, 0x64, 0x2a, - 0xf0, 0xf3, 0xae, 0x82, 0x06, 0x96, 0x40, 0x3f, 0x2b, 0xa0, 0x95, 0x05, 0x78, 0x56, 0xf1, 0x66, - 0x9e, 0xb9, 0x5c, 0x4e, 0x03, 0xf7, 0x9d, 0x5e, 0x03, 0xbd, 0xa8, 0xf5, 0x72, 0xfd, 0x96, 0xf5, - 0x92, 0xcd, 0x48, 0xd4, 0x60, 0x1c, 0xce, 0xb1, 0xe3, 0xde, 0x34, 0x03, 0x7f, 0xbd, 0xf6, 0xaf, - 0xcf, 0xc8, 0x2f, 0xa4, 0x44, 0x65, 0x18, 0x78, 0x4e, 0x55, 0x31, 0xff, 0xed, 0x63, 0x96, 0x9e, - 0xf9, 0xc7, 0x4b, 0xde, 0x98, 0xe5, 0xf9, 0x90, 0xd7, 0xdc, 0x48, 0x2b, 0x0b, 0xb2, 0x7a, 0xaa, - 0xa5, 0xe6, 0x99, 0xfc, 0x8c, 0xc2, 0x26, 0x37, 0x4e, 0xca, 0x2d, 0x3f, 0x66, 0x75, 0x49, 0xc5, - 0xb0, 0x8d, 0x3f, 0xaf, 0xb5, 0x52, 0xb1, 0x27, 0x2b, 0x98, 0xd1, 0xce, 0x1f, 0x5f, 0xb7, 0x1a, - 0x06, 0xf5, 0x5c, 0xdb, 0x6c, 0xf5, 0xcc, 0xe9, 0x79, 0xb6, 0xe1, 0x92, 0x18, 0xd3, 0x4e, 0x70, - 0x5b, 0xc0, 0x86, 0x4e, 0xae, 0xce, 0x6c, 0x3a, 0xbb, 0x24, 0xf2, 0x54, 0x2e, 0xff, 0x62, 0xa5, - 0x96, 0x4d, 0xd7, 0x5f, 0xe7, 0xb3, 0x8b, 0x6b, 0xc0, 0xec, 0xe2, 0x4c, 0xc7, 0x6c, 0x7d, 0xac, - 0xe2, 0x2c, 0xc7, 0x30, 0x27, 0xc6, 0xcb, 0xb8, 0xde, 0xb9, 0x13, 0x91, 0x1e, 0x13, 0x90, 0x18, - 0x57, 0xcd, 0x46, 0x9e, 0xe5, 0x1e, 0xef, 0xed, 0xed, 0x1c, 0x97, 0x16, 0x4b, 0xa5, 0x29, 0x16, - 0xf8, 0x51, 0x3c, 0xb5, 0x6e, 0x92, 0x67, 0x51, 0x30, 0x07, 0x42, 0x7b, 0x52, 0x85, 0xbe, 0x24, - 0x8a, 0x87, 0x62, 0x11, 0x31, 0xfa, 0xa6, 0xb8, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, 0x1b, 0xbb, - 0xed, 0xd5, 0x9d, 0xeb, 0x92, 0x8c, 0xcd, 0xeb, 0xa5, 0xf6, 0xa6, 0x6a, 0x6b, 0x99, 0x66, 0xa6, - 0xab, 0x57, 0x14, 0xe6, 0xc7, 0x34, 0x51, 0x88, 0x88, 0x06, 0x11, 0x0d, 0x22, 0x1a, 0x44, 0x34, - 0x88, 0x68, 0x10, 0xd1, 0x20, 0xa2, 0x41, 0x44, 0xf3, 0x80, 0x41, 0x5e, 0x2f, 0xf2, 0xf8, 0x29, - 0xe9, 0x9d, 0xa9, 0x9f, 0xeb, 0x1c, 0x7e, 0x8c, 0xb9, 0xfc, 0x02, 0x59, 0xfa, 0xb6, 0xe6, 0xea, - 0xd7, 0x9a, 0x9b, 0x5c, 0x6d, 0x20, 0xb9, 0x8a, 0xe4, 0x2a, 0x92, 0xab, 0x68, 0x8a, 0xa0, 0x29, - 0x82, 0xa6, 0x08, 0x9a, 0x22, 0x68, 0x8a, 0xa0, 0x29, 0x02, 0xdb, 0x14, 0x41, 0x8e, 0x12, 0x81, - 0x01, 0x02, 0x03, 0x04, 0x06, 0x08, 0x0c, 0x10, 0x18, 0x20, 0x30, 0x40, 0x60, 0xb0, 0xce, 0x54, - 0x5f, 0x86, 0xb4, 0x57, 0xe3, 0xf9, 0x96, 0xa5, 0x45, 0x2c, 0xcf, 0x1b, 0xde, 0x6b, 0xfd, 0x2a, - 0x64, 0xf9, 0x8f, 0xc0, 0x73, 0x2e, 0xe3, 0x31, 0x0c, 0x84, 0x2c, 0x8f, 0xef, 0x36, 0x67, 0xb4, - 0x72, 0xf2, 0xed, 0xf9, 0x02, 0x95, 0x6b, 0x18, 0xa8, 0xac, 0x03, 0x34, 0x95, 0x1f, 0xa8, 0x3c, - 0x37, 0xe8, 0x49, 0x67, 0xdb, 0xa3, 0xc4, 0x15, 0x74, 0xae, 0xf9, 0x9e, 0x30, 0xe3, 0x73, 0xc0, - 0x9a, 0x4a, 0x6f, 0x7c, 0xde, 0xb6, 0xb6, 0xc6, 0x6e, 0x82, 0x0f, 0xc9, 0xf6, 0x33, 0x70, 0x08, - 0x44, 0x10, 0xa9, 0x79, 0xd3, 0x42, 0xd3, 0xb7, 0x9e, 0xbe, 0x08, 0x46, 0xec, 0xfe, 0x9c, 0x59, - 0x90, 0xf0, 0x0e, 0xc5, 0x7c, 0x59, 0x8c, 0x18, 0xbf, 0x8f, 0x09, 0xf1, 0xda, 0x8d, 0x59, 0xd0, - 0x09, 0xf1, 0xc5, 0xf2, 0xe0, 0xf3, 0xa4, 0xbf, 0x03, 0x65, 0x6c, 0x30, 0x7f, 0x5c, 0xcb, 0x76, - 0x07, 0xc3, 0xda, 0xe4, 0x6c, 0xd6, 0x51, 0xa4, 0x02, 0x70, 0xb1, 0x8a, 0xbf, 0x3a, 0x3a, 0x94, - 0x30, 0xae, 0xea, 0x1d, 0x0d, 0x2d, 0x4a, 0x0a, 0xf4, 0xe0, 0xd0, 0xd4, 0x7b, 0x43, 0x43, 0x05, - 0x41, 0x9d, 0xbd, 0x36, 0x74, 0x51, 0x5a, 0xc6, 0xe8, 0x16, 0xfd, 0xb4, 0x8b, 0x06, 0xaa, 0x4b, - 0x2b, 0xe5, 0x35, 0xb3, 0x14, 0x9d, 0x76, 0xbb, 0xd9, 0x5e, 0xbf, 0xe5, 0x58, 0x87, 0xda, 0xb1, - 0x1a, 0x64, 0x61, 0xe1, 0xa2, 0xcf, 0x8f, 0x45, 0x9e, 0x31, 0x46, 0x12, 0x63, 0x24, 0xf3, 0x30, - 0x87, 0x53, 0xf4, 0xc2, 0x02, 0xa2, 0x24, 0x59, 0x78, 0xd3, 0xca, 0x6e, 0xc2, 0x26, 0x57, 0xad, - 0x48, 0x02, 0x7a, 0xb8, 0x9e, 0x31, 0x92, 0x21, 0x18, 0xe3, 0x95, 0x38, 0x4e, 0x22, 0x4a, 0x64, - 0x7e, 0x0b, 0xf6, 0x71, 0x88, 0xf5, 0x28, 0x83, 0xc6, 0x42, 0x34, 0x62, 0x0b, 0x6e, 0xfa, 0x72, - 0x4c, 0xd8, 0xac, 0x87, 0xe1, 0xf9, 0xa1, 0x28, 0x5e, 0x8b, 0x6a, 0x32, 0x50, 0xb1, 0x66, 0xaf, - 0xf5, 0x15, 0x69, 0xf6, 0x9a, 0xeb, 0xe0, 0xe8, 0x3a, 0x40, 0xda, 0x0f, 0x92, 0xf6, 0x03, 0xa5, - 0xf3, 0x60, 0x15, 0x33, 0x36, 0xf2, 0x36, 0x41, 0xc8, 0x7b, 0xe0, 0xd2, 0x01, 0x32, 0xb2, 0xfe, - 0x6f, 0x6e, 0xba, 0x4c, 0xde, 0x00, 0x43, 0xc7, 0x50, 0xdb, 0x71, 0xd4, 0x79, 0x2c, 0xb5, 0x1f, - 0x4f, 0xdd, 0xc7, 0xd4, 0xd8, 0x71, 0x35, 0x76, 0x6c, 0x4d, 0x1c, 0x5f, 0x4d, 0x8c, 0x43, 0xc1, - 0xfd, 0x56, 0xf4, 0x58, 0x4f, 0xd9, 0x43, 0xfa, 0x3b, 0x47, 0x68, 0xd9, 0xb5, 0x56, 0xf1, 0xd6, - 0xea, 0xc6, 0x8e, 0xbb, 0x89, 0x63, 0x6f, 0xec, 0xf8, 0x9b, 0x12, 0x03, 0xc6, 0xc5, 0x81, 0x71, - 0xb1, 0x60, 0x52, 0x3c, 0xe8, 0x11, 0x13, 0x9a, 0xc4, 0x45, 0xfa, 0xa2, 0x85, 0xdb, 0xbe, 0xff, - 0x92, 0x21, 0xa9, 0x8e, 0xb1, 0x75, 0x95, 0x07, 0xd5, 0xff, 0x0b, 0x38, 0x5d, 0xdf, 0xde, 0x72, - 0x1b, 0x69, 0x1f, 0xb7, 0x71, 0xe7, 0xb6, 0x9f, 0xf5, 0xe4, 0x9f, 0xd1, 0xe7, 0x46, 0xd2, 0xf2, - 0x6d, 0xfc, 0xb9, 0xfd, 0xb5, 0x56, 0x6d, 0x27, 0xfd, 0xe0, 0x36, 0x7f, 0x34, 0x1f, 0xb2, 0x5f, - 0xb8, 0xf1, 0xaf, 0xaf, 0x57, 0x57, 0xe1, 0x8f, 0xcf, 0x0f, 0xf1, 0xdf, 0x27, 0x0f, 0xd7, 0xff, - 0xd9, 0xfc, 0x5d, 0xf7, 0xf9, 0x8b, 0x6f, 0x78, 0x75, 0xb5, 0x75, 0xfd, 0xdb, 0x8a, 0x36, 0x57, - 0x2c, 0xca, 0x02, 0xbf, 0x3a, 0xae, 0x36, 0x76, 0xd8, 0x9c, 0x74, 0xd1, 0xe1, 0xc7, 0x1a, 0x49, - 0xfd, 0xaa, 0x47, 0xf9, 0x20, 0xa1, 0x83, 0x35, 0xc3, 0x89, 0xa7, 0xc3, 0x23, 0xb2, 0x40, 0x64, - 0x81, 0xc8, 0x62, 0x8d, 0x90, 0x45, 0xc4, 0xb8, 0xda, 0x31, 0x00, 0x25, 0xda, 0x1a, 0x87, 0xd4, - 0x13, 0xdd, 0xf1, 0xfc, 0x8f, 0xde, 0xd3, 0x64, 0xe9, 0x8e, 0xfe, 0x98, 0x19, 0x5c, 0x73, 0x34, - 0xc8, 0xcc, 0xf8, 0xa6, 0xc2, 0x11, 0x66, 0xb7, 0x9e, 0xee, 0xf0, 0x04, 0x43, 0xa7, 0xee, 0xe9, - 0xd2, 0x92, 0x3b, 0xf3, 0x4b, 0xdb, 0x6c, 0xe0, 0xda, 0x96, 0x22, 0x97, 0xf5, 0x8f, 0x86, 0x90, - 0x7b, 0x35, 0xba, 0x5e, 0x16, 0xf5, 0x64, 0xe8, 0x9d, 0x78, 0x4d, 0x81, 0x20, 0x2c, 0xbc, 0x69, - 0x7d, 0x48, 0xbd, 0xd6, 0x93, 0x4f, 0x99, 0xe2, 0x43, 0xf4, 0x4f, 0x77, 0x91, 0x74, 0x56, 0x0d, - 0xbc, 0xaa, 0x3e, 0x3e, 0x55, 0x93, 0xb5, 0x83, 0xee, 0x92, 0xa5, 0xb2, 0x62, 0xd0, 0x5d, 0x52, - 0xbe, 0x75, 0x92, 0x23, 0x35, 0x70, 0xde, 0xc3, 0x59, 0xdf, 0xd6, 0x30, 0xd6, 0x54, 0x6a, 0x61, - 0xb2, 0x70, 0xdd, 0x71, 0x82, 0xe1, 0xe8, 0x87, 0xa2, 0x0b, 0xb9, 0x18, 0x51, 0x9a, 0xad, 0xb0, - 0xe1, 0x9b, 0x2b, 0x97, 0xa5, 0xe0, 0xe1, 0x9b, 0x6b, 0xa6, 0x4b, 0xa0, 0x36, 0x50, 0xa0, 0xa2, - 0x40, 0x05, 0x24, 0x50, 0xd1, 0xff, 0xbc, 0x48, 0xfc, 0x64, 0xe2, 0xd8, 0x1b, 0x3b, 0xfe, 0xa6, - 0xc4, 0x80, 0x71, 0x71, 0x60, 0x5c, 0x2c, 0x98, 0x14, 0x0f, 0x7a, 0xf9, 0x03, 0xf4, 0x3f, 0xa3, - 0xff, 0x19, 0xfd, 0xcf, 0x26, 0xb8, 0x20, 0x0d, 0xf0, 0x2a, 0x10, 0x6c, 0xa0, 0x33, 0xa9, 0x33, - 0x55, 0x00, 0xa3, 0x71, 0x51, 0x95, 0xa2, 0x2a, 0x45, 0x55, 0xba, 0x56, 0xaa, 0x34, 0x55, 0xa4, - 0x5a, 0x45, 0xc0, 0x13, 0x3d, 0xda, 0xd2, 0x38, 0xe6, 0x21, 0x8f, 0x7c, 0x8c, 0xa9, 0xc9, 0xb4, - 0xc6, 0x18, 0x53, 0x83, 0x22, 0x1e, 0x45, 0xfc, 0xda, 0x8a, 0x78, 0x8c, 0xa9, 0xd1, 0xb8, 0x1f, - 0x31, 0xa6, 0x66, 0xae, 0xad, 0x87, 0x31, 0x35, 0xaf, 0x2c, 0x2d, 0xc6, 0xd4, 0x94, 0x24, 0x97, - 0xf5, 0x8f, 0x76, 0x8d, 0x21, 0x25, 0xd0, 0x42, 0x4a, 0x32, 0x54, 0x6b, 0xd6, 0x3f, 0xdb, 0x45, - 0xdc, 0xa0, 0x37, 0x42, 0x68, 0x8c, 0x29, 0x49, 0x46, 0xc3, 0x24, 0xdc, 0xd2, 0x70, 0x3d, 0x3a, - 0x41, 0xd1, 0x09, 0xfa, 0xcb, 0xa3, 0x5d, 0x1d, 0x88, 0x20, 0x32, 0xe0, 0x0c, 0x9d, 0x1a, 0x5b, - 0xaf, 0x99, 0x5f, 0x47, 0x33, 0x1f, 0xcd, 0x7c, 0x34, 0xf3, 0x8b, 0xbf, 0xa8, 0x2e, 0x31, 0x92, - 0x0e, 0xa8, 0xa9, 0x64, 0xc7, 0xab, 0x87, 0x40, 0x4b, 0x09, 0x0f, 0xc3, 0x62, 0xc5, 0x98, 0x78, - 0x31, 0x29, 0x66, 0x8c, 0x8b, 0x1b, 0xd3, 0x62, 0xa7, 0x34, 0xf1, 0x53, 0x9a, 0x18, 0x2a, 0x43, - 0x1c, 0x19, 0xb2, 0x72, 0x35, 0xef, 0x77, 0xdd, 0x62, 0x2a, 0x1d, 0x98, 0xd8, 0x36, 0x0d, 0x55, - 0xd5, 0x0f, 0x1c, 0x83, 0x1b, 0x32, 0x2d, 0xff, 0x35, 0x75, 0x33, 0x43, 0x3b, 0xa5, 0x48, 0x63, - 0xc1, 0xb9, 0x6f, 0x92, 0xf0, 0x2c, 0x15, 0x23, 0xe3, 0x5f, 0x1b, 0x9a, 0x17, 0xbd, 0xee, 0xa1, - 0xd2, 0x04, 0x7d, 0x19, 0x02, 0xbf, 0x34, 0xc1, 0x5f, 0x96, 0x02, 0x28, 0x5d, 0x11, 0x94, 0xae, - 0x10, 0xca, 0x54, 0x0c, 0x66, 0x14, 0x84, 0x21, 0x45, 0x91, 0x4e, 0x8c, 0x76, 0xf7, 0xd5, 0xab, - 0xa7, 0xa5, 0x1f, 0x04, 0x1e, 0x25, 0xdc, 0xe4, 0x79, 0x99, 0xa0, 0xd3, 0x3a, 0xa8, 0x25, 0x30, - 0x94, 0x65, 0x39, 0x73, 0x1f, 0xe3, 0x59, 0x97, 0xe6, 0x4f, 0x82, 0x09, 0xf7, 0x11, 0x71, 0x6e, - 0xa8, 0x50, 0x4c, 0xd2, 0x58, 0x3e, 0x8c, 0xc8, 0xeb, 0x1b, 0xe2, 0x95, 0x00, 0x72, 0x5e, 0xbe, - 0x2f, 0x64, 0xbc, 0x53, 0xaf, 0xd5, 0x10, 0xed, 0x20, 0xda, 0x41, 0xb4, 0x83, 0x68, 0x67, 0xdd, - 0xd1, 0x4e, 0xe1, 0x7e, 0x46, 0xf3, 0xca, 0xae, 0x8e, 0xc1, 0x5b, 0x98, 0x89, 0xee, 0x79, 0xfe, - 0xc7, 0xec, 0x71, 0xb7, 0x4c, 0x47, 0xff, 0xcc, 0xdc, 0x6c, 0x12, 0x32, 0x52, 0x7f, 0x5f, 0xce, - 0xfd, 0xca, 0x8a, 0x20, 0x99, 0xdd, 0xeb, 0xa6, 0x23, 0x4a, 0x4a, 0x12, 0x0b, 0x4f, 0xb7, 0x0a, - 0xb9, 0x2b, 0x7f, 0xab, 0xb4, 0x6a, 0xbb, 0x6d, 0xdc, 0x2d, 0x20, 0x54, 0x93, 0xf9, 0xd1, 0xaf, - 0xd1, 0x7a, 0x45, 0xeb, 0x75, 0xde, 0x69, 0x09, 0x05, 0xa5, 0x7e, 0xa8, 0xcc, 0x9b, 0xab, 0x93, - 0x1b, 0x41, 0xb6, 0x4f, 0x63, 0xe8, 0x8d, 0x06, 0x2a, 0x1a, 0xa8, 0x68, 0xa0, 0xa2, 0x81, 0xba, - 0xee, 0x06, 0x2a, 0xd2, 0xf1, 0x08, 0x68, 0x96, 0x18, 0xd0, 0x54, 0x1d, 0xea, 0x91, 0xfb, 0xd2, - 0x60, 0xcd, 0xf8, 0x76, 0x90, 0xc1, 0x0d, 0x52, 0xef, 0x88, 0x6c, 0x10, 0xd9, 0x20, 0xb2, 0x59, - 0x7b, 0x64, 0x83, 0xd4, 0xfb, 0xdc, 0x7f, 0x56, 0x95, 0x7a, 0xaf, 0x21, 0x99, 0x0a, 0x43, 0x2c, - 0x3c, 0xdd, 0x2a, 0x8b, 0xa0, 0xde, 0x9b, 0x9d, 0x1a, 0xee, 0x16, 0x18, 0xaa, 0xc9, 0xfc, 0xe8, - 0x48, 0xbd, 0xa3, 0xa5, 0x9a, 0xc1, 0x52, 0x65, 0x81, 0x60, 0xaa, 0x14, 0x23, 0x75, 0x7c, 0x27, - 0x0c, 0x0e, 0x43, 0x0b, 0x15, 0x2d, 0x54, 0xb4, 0x50, 0xd1, 0x42, 0x05, 0x6f, 0xa1, 0xee, 0x94, - 0x60, 0xa0, 0xb6, 0xd1, 0x40, 0x5d, 0x52, 0x03, 0x15, 0x63, 0xc3, 0xd0, 0x40, 0x9d, 0x73, 0xab, - 0x34, 0xda, 0x2d, 0xdc, 0x2c, 0x68, 0x9f, 0xa2, 0x7d, 0x8a, 0xf6, 0x69, 0xb6, 0x69, 0xb9, 0x61, - 0x42, 0x45, 0xc4, 0x9b, 0xd4, 0x09, 0x36, 0x6f, 0xa6, 0x3e, 0xbf, 0x21, 0xda, 0x65, 0x68, 0x97, - 0xa1, 0x5d, 0x86, 0x76, 0x19, 0x18, 0xbb, 0xec, 0xb1, 0xa8, 0x7a, 0x19, 0x61, 0x51, 0xbb, 0x06, - 0xef, 0x31, 0x9e, 0x33, 0xf0, 0xc6, 0xd9, 0x4b, 0x9d, 0x63, 0x2a, 0x25, 0x20, 0x7d, 0x03, 0x9d, - 0x64, 0x5e, 0xd7, 0x07, 0x86, 0x3a, 0xcc, 0xbc, 0x7a, 0xc3, 0x45, 0x77, 0x9e, 0x31, 0xfe, 0x96, - 0xd7, 0xef, 0x00, 0x5b, 0x9a, 0xe5, 0x9e, 0xaa, 0x0e, 0x9e, 0x2a, 0x6d, 0xa7, 0xaa, 0xfb, 0x33, - 0xde, 0xfb, 0xa4, 0xea, 0xee, 0x55, 0x8f, 0xae, 0x7f, 0xd4, 0xde, 0xb7, 0x1e, 0x36, 0xbb, 0x9b, - 0x1b, 0xcf, 0x7f, 0xd7, 0xdd, 0xfc, 0x51, 0x7b, 0xdf, 0x7e, 0xd8, 0xd8, 0x78, 0xe1, 0x7f, 0x7e, - 0x7f, 0x69, 0x8c, 0xcd, 0x9f, 0x1b, 0x1b, 0x1b, 0xe3, 0xf3, 0xf4, 0xe4, 0x8c, 0x7d, 0xad, 0xd5, - 0xaf, 0x7f, 0x4f, 0x3e, 0x8e, 0xfe, 0x4e, 0x4f, 0xe9, 0x5c, 0x5f, 0xde, 0x2c, 0xa1, 0x2b, 0xd4, - 0xaf, 0x44, 0xd0, 0xff, 0x76, 0xaf, 0xff, 0xd3, 0xdd, 0xfc, 0xd1, 0x79, 0x98, 0x7c, 0x4e, 0xfe, - 0xde, 0xfc, 0xb9, 0xb1, 0xf5, 0xdb, 0xd5, 0xd5, 0xd6, 0xd6, 0x6f, 0x9b, 0xa3, 0x17, 0x1f, 0x7f, - 0xef, 0xb7, 0xd1, 0xff, 0xfe, 0xde, 0xed, 0xce, 0xfc, 0x6a, 0x73, 0xe3, 0x5f, 0x5b, 0xab, 0x20, - 0x56, 0x90, 0x35, 0x48, 0xb6, 0xc6, 0x09, 0x93, 0x6a, 0x4f, 0x29, 0x61, 0x16, 0xf2, 0x9d, 0x32, - 0x7e, 0xe8, 0x25, 0xa5, 0x37, 0x0c, 0x13, 0x5d, 0x95, 0x53, 0x72, 0x37, 0x75, 0xa7, 0xfa, 0x4e, - 0xab, 0xd5, 0xd9, 0x6e, 0xb5, 0x6a, 0xdb, 0xcd, 0xed, 0xda, 0x6e, 0xbb, 0x5d, 0xef, 0xd4, 0x4d, - 0xb2, 0xf4, 0x67, 0xc2, 0xa1, 0x82, 0x3a, 0x1f, 0xef, 0x2b, 0x5d, 0x8b, 0x47, 0x9e, 0x87, 0xfc, - 0x11, 0xf2, 0x47, 0x59, 0xf9, 0xa3, 0xa4, 0x5e, 0xbb, 0xa8, 0x32, 0xa7, 0x3c, 0x06, 0xe9, 0xf1, - 0x96, 0xc8, 0x21, 0x21, 0x87, 0x84, 0x1c, 0x12, 0x72, 0x48, 0x60, 0x38, 0x24, 0xf4, 0xed, 0x2f, - 0x91, 0xa1, 0x8b, 0xbe, 0x7d, 0x23, 0x5b, 0x1d, 0x7d, 0xfb, 0x9a, 0xb6, 0x4a, 0xa3, 0x8d, 0x65, - 0x5f, 0xe0, 0xd8, 0xd1, 0x68, 0xa5, 0xa3, 0x6d, 0xb6, 0xf0, 0x11, 0x75, 0x57, 0x8c, 0x37, 0xbc, - 0x90, 0x66, 0xfb, 0x84, 0xdd, 0x08, 0x11, 0x7e, 0x78, 0x6c, 0x9e, 0xf3, 0x61, 0xdc, 0xf4, 0x62, - 0x49, 0x1b, 0xd1, 0x69, 0x5c, 0xba, 0x4a, 0x3a, 0x4d, 0x55, 0x25, 0x88, 0xfd, 0x9d, 0x71, 0x83, - 0xad, 0x44, 0x5e, 0xb8, 0x17, 0xb6, 0x15, 0xc1, 0xb6, 0x22, 0x8b, 0x36, 0xb3, 0xb1, 0xad, 0x48, - 0x69, 0x4a, 0xc2, 0x58, 0x5b, 0x11, 0x43, 0x5d, 0x90, 0x66, 0x0e, 0x93, 0x91, 0x6e, 0x48, 0x86, - 0xc5, 0x97, 0x71, 0x31, 0x56, 0x86, 0x38, 0x2b, 0x4d, 0xac, 0x95, 0x25, 0xde, 0x4a, 0x17, 0x73, - 0xa5, 0x8b, 0xbb, 0x32, 0xc5, 0x9e, 0x59, 0xb3, 0xca, 0x94, 0xf1, 0x63, 0x4a, 0x1c, 0xa6, 0x37, - 0x98, 0x24, 0x7c, 0x56, 0x1d, 0x6a, 0x0b, 0x3a, 0x5e, 0x03, 0xc3, 0xfb, 0xf9, 0x79, 0xb2, 0xe9, - 0xd4, 0xbd, 0x0d, 0xef, 0xb3, 0x32, 0xd2, 0x4f, 0xd3, 0x9b, 0xd5, 0xcc, 0xc6, 0x09, 0x5c, 0x1b, - 0x9e, 0x2b, 0xb3, 0x8e, 0xab, 0xd2, 0x54, 0x4e, 0x99, 0xaa, 0xa7, 0x74, 0x15, 0x54, 0xb6, 0x2a, - 0x5a, 0x98, 0x4a, 0x5a, 0x98, 0x6a, 0x5a, 0x84, 0x8a, 0x32, 0xab, 0xaa, 0x0c, 0xab, 0xac, 0x74, - 0xc2, 0x8c, 0x3b, 0xc2, 0x66, 0x4e, 0x9b, 0x69, 0x87, 0xd8, 0x73, 0xd1, 0x58, 0x02, 0xa3, 0x5e, - 0x92, 0x83, 0x6c, 0xf2, 0xa7, 0x1c, 0xe9, 0x61, 0x95, 0xed, 0x30, 0x4b, 0x6f, 0x5a, 0x72, 0xd5, - 0xa6, 0xf4, 0xbe, 0x8b, 0xf2, 0x89, 0x3c, 0x1e, 0x91, 0xb2, 0x7d, 0x23, 0x25, 0x49, 0x99, 0xa7, - 0x5b, 0xaa, 0x44, 0xc7, 0xda, 0xcc, 0x96, 0x2a, 0x2d, 0x79, 0x16, 0x37, 0x95, 0x61, 0xc5, 0x58, - 0xde, 0x5d, 0x40, 0x67, 0x0f, 0x94, 0xe5, 0x98, 0x4b, 0xef, 0x57, 0xba, 0x83, 0xce, 0xfc, 0x46, - 0x30, 0xb8, 0x44, 0x95, 0xc4, 0x83, 0xf2, 0xe8, 0xfa, 0x2a, 0xcf, 0xac, 0x7f, 0x7e, 0x63, 0xb4, - 0x53, 0xd1, 0x4e, 0x45, 0x3b, 0x15, 0xed, 0x54, 0xb4, 0x53, 0xc7, 0xa7, 0x2d, 0xd6, 0x5a, 0x82, - 0xba, 0x65, 0xe6, 0xc1, 0x6d, 0x97, 0x93, 0x07, 0x37, 0x8e, 0xbc, 0xb0, 0xab, 0xcc, 0xed, 0x4e, - 0x45, 0x5a, 0x3c, 0xfb, 0xc5, 0xf8, 0x67, 0x1e, 0x4f, 0x07, 0x22, 0xa0, 0x35, 0x47, 0x40, 0x18, - 0x8b, 0xf6, 0xc2, 0x7d, 0x4a, 0x0d, 0x65, 0x9a, 0x0d, 0xba, 0x31, 0x12, 0xdd, 0x64, 0x6e, 0xc5, - 0x4d, 0xa4, 0x24, 0x49, 0x45, 0x14, 0x35, 0x1f, 0x2d, 0x30, 0xba, 0x0d, 0xf0, 0x60, 0x81, 0x06, - 0x06, 0x0b, 0x2c, 0x0d, 0xf2, 0xc5, 0x60, 0x81, 0xf5, 0xd5, 0x4e, 0x18, 0x2c, 0xa0, 0x77, 0x3a, - 0x31, 0x58, 0x00, 0x49, 0x18, 0x24, 0x61, 0x90, 0x84, 0x41, 0x12, 0x06, 0x83, 0x05, 0x0a, 0x8b, - 0x46, 0x0c, 0x16, 0x28, 0xf0, 0x62, 0x18, 0x2c, 0x50, 0xe6, 0x03, 0x60, 0xb0, 0x80, 0xe9, 0x2d, - 0x85, 0xc1, 0x02, 0x18, 0x2c, 0x90, 0x19, 0xc2, 0xa3, 0x8f, 0x7b, 0x66, 0x53, 0xa1, 0x8f, 0x1b, - 0xcd, 0x2b, 0x34, 0xaf, 0xd0, 0xbc, 0x42, 0xf3, 0x6a, 0xd9, 0xcc, 0x2b, 0xf4, 0x71, 0x97, 0xe5, - 0xe3, 0x46, 0xf2, 0xdb, 0x5a, 0x27, 0xd7, 0xec, 0xc8, 0x63, 0x88, 0x05, 0x49, 0x96, 0x7f, 0xcb, - 0x2c, 0x7a, 0xab, 0x54, 0x8c, 0xb8, 0xc5, 0x45, 0x64, 0x2b, 0x3e, 0x16, 0xf2, 0xc7, 0x93, 0x7b, - 0x7e, 0x3b, 0x4f, 0x1e, 0xf8, 0x8b, 0x47, 0xf8, 0xb7, 0xe3, 0xf0, 0xa6, 0xf5, 0x6d, 0x6f, 0xf4, - 0x94, 0xdf, 0xbe, 0x08, 0x11, 0x7e, 0x8a, 0x9f, 0xef, 0x5b, 0xfa, 0xdd, 0xcb, 0xc9, 0xe3, 0xad, - 0x41, 0xed, 0x14, 0x33, 0x51, 0x04, 0x46, 0xa3, 0x07, 0x8c, 0x57, 0x48, 0x69, 0x60, 0x85, 0x94, - 0xd2, 0x6c, 0x05, 0xac, 0x90, 0xb2, 0x7a, 0x5a, 0xcb, 0x58, 0x85, 0x14, 0x62, 0xdb, 0x34, 0x54, - 0x55, 0x3f, 0x70, 0x4a, 0x08, 0x7c, 0x9a, 0xbe, 0x19, 0xe4, 0x5e, 0xd3, 0x09, 0x97, 0x89, 0xdd, - 0xa6, 0x4b, 0x24, 0x91, 0x30, 0x2c, 0x0c, 0x02, 0x49, 0x84, 0x61, 0x61, 0x4b, 0x63, 0x19, 0x97, - 0x57, 0x91, 0xba, 0x1f, 0x04, 0x1e, 0x25, 0xbc, 0x8c, 0x96, 0x66, 0xf5, 0x35, 0x8e, 0x4d, 0x26, - 0xce, 0x0d, 0x15, 0x8a, 0xc9, 0x24, 0x0a, 0x6e, 0x64, 0x4b, 0xde, 0x10, 0xaf, 0x04, 0x9d, 0xfd, - 0xf2, 0x7d, 0x21, 0xab, 0xef, 0x7a, 0xad, 0x86, 0xca, 0x1b, 0x95, 0x37, 0x2a, 0x6f, 0x54, 0xde, - 0xeb, 0xae, 0xbc, 0x23, 0xc6, 0x55, 0xbd, 0x53, 0x82, 0xee, 0xee, 0x60, 0x3f, 0x89, 0xb7, 0x5f, - 0x04, 0xfb, 0x49, 0x18, 0xd9, 0xeb, 0xd8, 0x4f, 0x42, 0xd3, 0x56, 0x69, 0xd5, 0x76, 0xb1, 0xa1, - 0x04, 0x0c, 0xd5, 0x64, 0x7e, 0xf4, 0xeb, 0x35, 0x36, 0xc6, 0xec, 0x48, 0x88, 0xd8, 0x1c, 0x9a, - 0xe4, 0x27, 0x95, 0x50, 0x61, 0xfa, 0xf9, 0x1d, 0xd1, 0xd4, 0x40, 0x53, 0x03, 0x4d, 0x0d, 0x34, - 0x35, 0x40, 0x99, 0x1a, 0xd8, 0xb9, 0x6e, 0x9d, 0x2d, 0x8d, 0x1a, 0x62, 0x47, 0xb4, 0x34, 0xe6, - 0xdb, 0x2a, 0xd8, 0xb9, 0x0e, 0x0d, 0x0d, 0x34, 0x34, 0x12, 0x38, 0x46, 0xfd, 0x50, 0x99, 0xb7, - 0x2f, 0x26, 0x37, 0x82, 0xec, 0xd7, 0x89, 0x71, 0x24, 0x3a, 0x76, 0xd0, 0xda, 0x42, 0x6b, 0x0b, - 0xad, 0xad, 0x75, 0xb7, 0xb6, 0x30, 0x2a, 0xa3, 0x4c, 0xfd, 0x5c, 0x75, 0xa8, 0x47, 0xee, 0x4b, - 0xd3, 0xd2, 0xe3, 0xdb, 0x41, 0xd6, 0xd5, 0x18, 0x81, 0x81, 0x8a, 0x1a, 0x15, 0x35, 0x2a, 0xea, - 0xb5, 0x57, 0xd4, 0x18, 0x81, 0x31, 0xf7, 0x1f, 0xe4, 0x45, 0x8b, 0xdd, 0x0f, 0x79, 0x51, 0xad, - 0x5b, 0x65, 0x11, 0xbc, 0x68, 0xb3, 0x53, 0xc3, 0xdd, 0x02, 0x43, 0x35, 0x99, 0x1f, 0x7d, 0xbd, - 0x89, 0xd1, 0xb2, 0x22, 0x2f, 0x4c, 0x47, 0x5c, 0x60, 0xc8, 0x3b, 0x1a, 0x5c, 0x68, 0x70, 0xa1, - 0xc1, 0x85, 0x06, 0x17, 0xc6, 0xa1, 0xa0, 0xbd, 0x55, 0x06, 0x88, 0xc6, 0x88, 0x77, 0xb4, 0xb7, - 0xe6, 0xdc, 0x2a, 0xa5, 0xd5, 0x6c, 0x45, 0x73, 0x0b, 0xcd, 0xad, 0x25, 0x36, 0xb7, 0x6e, 0x98, - 0x50, 0x11, 0xf1, 0xaa, 0xe3, 0x42, 0x54, 0xe6, 0xad, 0xae, 0xe7, 0x37, 0x44, 0x33, 0x03, 0xcd, - 0x0c, 0x34, 0x33, 0xd0, 0xcc, 0x00, 0x63, 0x66, 0xb0, 0xd0, 0xb0, 0xec, 0x9a, 0x96, 0x5f, 0xf5, - 0x5d, 0x83, 0xf7, 0x18, 0xcf, 0x19, 0x78, 0x5b, 0xe3, 0x71, 0x65, 0x6e, 0x5a, 0x25, 0xac, 0xcd, - 0xcc, 0x1a, 0xed, 0x94, 0x53, 0xaa, 0x56, 0x51, 0xc1, 0x4b, 0x6b, 0x07, 0x52, 0xd9, 0xd8, 0xf8, - 0x5a, 0xab, 0xee, 0x5e, 0xff, 0xfc, 0x5a, 0xaf, 0xee, 0x5e, 0x8f, 0x3e, 0xd6, 0x93, 0x7f, 0x46, - 0x9f, 0x1b, 0x5f, 0x6b, 0xd5, 0xd6, 0xe4, 0x73, 0xfb, 0x6b, 0xad, 0xda, 0xbe, 0xde, 0xbc, 0xba, - 0xda, 0xda, 0xfc, 0xd1, 0x7c, 0xc8, 0x7e, 0xe1, 0xc6, 0xbf, 0xbe, 0x5e, 0x5d, 0x85, 0x3f, 0x3e, - 0x3f, 0xc4, 0x7f, 0x9f, 0x3c, 0x5c, 0xff, 0x67, 0xf3, 0xf7, 0x0a, 0xb6, 0xeb, 0x5f, 0x9e, 0x53, - 0xd5, 0xc1, 0x53, 0xa5, 0xed, 0x54, 0x75, 0x7f, 0xc6, 0x7b, 0x9f, 0x54, 0xdd, 0xbd, 0xea, 0xd1, - 0xf5, 0x8f, 0xda, 0xfb, 0xd6, 0xc3, 0x66, 0x77, 0x73, 0xe3, 0xf9, 0xef, 0xba, 0x9b, 0x3f, 0x6a, - 0xef, 0xdb, 0x0f, 0x1b, 0x1b, 0x2f, 0xfc, 0xcf, 0xef, 0x2f, 0x8d, 0xb1, 0xf9, 0x73, 0x63, 0x63, - 0x63, 0x7c, 0x9e, 0x9e, 0x9c, 0xb1, 0xaf, 0xb5, 0xfa, 0xf5, 0xef, 0xc9, 0xc7, 0xd1, 0xdf, 0xe9, - 0x29, 0x9d, 0xeb, 0xcb, 0x9b, 0x2f, 0x9e, 0xcd, 0xf7, 0xa5, 0x89, 0xa0, 0xff, 0xed, 0x5e, 0xff, - 0xa7, 0xbb, 0xf9, 0xa3, 0xf3, 0x30, 0xf9, 0x9c, 0xfc, 0xbd, 0xf9, 0x73, 0x63, 0xeb, 0xb7, 0xab, - 0xab, 0xad, 0xad, 0xdf, 0x36, 0x47, 0x2f, 0x3e, 0xfe, 0xde, 0x6f, 0xa3, 0xff, 0xfd, 0xbd, 0xdb, - 0x9d, 0xf9, 0xd5, 0xe6, 0xc6, 0xbf, 0xb6, 0x56, 0x41, 0xac, 0x40, 0x33, 0x82, 0x0d, 0xc1, 0xbd, - 0x13, 0x26, 0xd5, 0x9e, 0x52, 0x86, 0x3b, 0x64, 0x9e, 0x32, 0x7e, 0xe8, 0x25, 0xf5, 0xb1, 0x0c, - 0xf3, 0x36, 0x95, 0x53, 0x72, 0x37, 0x75, 0xa7, 0xfa, 0x4e, 0xab, 0xd5, 0xd9, 0x6e, 0xb5, 0x6a, - 0xdb, 0xcd, 0xed, 0xda, 0x6e, 0xbb, 0x5d, 0xef, 0xd4, 0x4d, 0x92, 0xce, 0x67, 0xc2, 0xa1, 0x82, - 0x3a, 0x1f, 0xef, 0x2b, 0x5d, 0x8b, 0x47, 0x9e, 0x87, 0x74, 0x48, 0x35, 0x29, 0xd9, 0x2d, 0xaa, - 0xcc, 0x29, 0x8f, 0x10, 0x79, 0xbc, 0x25, 0x52, 0x22, 0x48, 0x89, 0x20, 0x25, 0x82, 0x94, 0x08, - 0x18, 0x4a, 0x04, 0x3d, 0xaf, 0x4b, 0x64, 0xb7, 0xa1, 0xe7, 0xd5, 0xc8, 0x56, 0x47, 0xcf, 0xab, - 0xa6, 0xad, 0x82, 0x15, 0x00, 0x20, 0x99, 0x85, 0x16, 0x7a, 0x5e, 0xb1, 0xf3, 0x51, 0x99, 0x9d, - 0x8f, 0x0c, 0x74, 0xc4, 0x5a, 0xce, 0x6e, 0x42, 0xe6, 0x4d, 0xcd, 0xd2, 0x4c, 0x4c, 0x43, 0xa6, - 0xa5, 0x31, 0x93, 0x12, 0xbb, 0x0c, 0x2d, 0x83, 0xc9, 0x88, 0x5d, 0x86, 0x4a, 0xd3, 0x10, 0xc6, - 0x4c, 0xc1, 0x12, 0x3a, 0x84, 0x9a, 0xec, 0x08, 0x9a, 0x76, 0x00, 0xdd, 0xda, 0xfa, 0x30, 0x52, - 0x69, 0x1f, 0x66, 0x65, 0xe5, 0xb2, 0xea, 0xa2, 0x77, 0x4b, 0xb4, 0xd3, 0x62, 0xa1, 0x61, 0x52, - 0xd3, 0x98, 0x21, 0xfc, 0xcd, 0x11, 0xfc, 0xa5, 0x12, 0xfa, 0x66, 0x08, 0x7c, 0x5d, 0x3b, 0xc3, - 0x10, 0x3a, 0x2d, 0x15, 0x95, 0x56, 0xb4, 0x76, 0x91, 0xcc, 0xd9, 0x74, 0x53, 0x8f, 0x20, 0x2a, - 0x2e, 0x36, 0x8a, 0x8d, 0x50, 0x70, 0x5b, 0x55, 0xe8, 0x9d, 0x12, 0xa4, 0x1a, 0x71, 0xa9, 0x48, - 0xdf, 0xd3, 0xa3, 0xd4, 0x2a, 0x82, 0xba, 0x54, 0x50, 0x6e, 0xeb, 0xe3, 0xff, 0x34, 0xee, 0xf3, - 0x89, 0x86, 0x3d, 0x3f, 0xda, 0xb7, 0xda, 0xdb, 0xbb, 0x3b, 0x56, 0xd5, 0xfa, 0x32, 0x92, 0xb2, - 0x56, 0xb2, 0x65, 0x84, 0x75, 0x4e, 0x9d, 0x88, 0x3b, 0x84, 0xdb, 0xf7, 0x56, 0x4f, 0x04, 0x2a, - 0xb0, 0x03, 0xef, 0x8a, 0x6f, 0x7c, 0x39, 0x3f, 0xef, 0x6d, 0x5a, 0x5f, 0xa8, 0x90, 0x2c, 0xe0, - 0x56, 0xd3, 0x72, 0x03, 0x61, 0x1d, 0xf7, 0x6e, 0x5a, 0x16, 0xe1, 0x4e, 0xfc, 0x41, 0x67, 0x69, - 0x02, 0x53, 0x98, 0x74, 0x1a, 0x8b, 0x3e, 0x2e, 0x92, 0x66, 0x70, 0x64, 0x1a, 0x86, 0x3e, 0x81, - 0x9f, 0xfa, 0x57, 0x71, 0xd9, 0x00, 0xc5, 0xbb, 0xc5, 0x92, 0x42, 0x45, 0xe5, 0x8b, 0x66, 0x75, - 0x65, 0x5e, 0x4d, 0x15, 0xdb, 0x00, 0xf9, 0x97, 0x2b, 0xdf, 0x95, 0x39, 0x97, 0x67, 0x82, 0x2f, - 0x73, 0x5b, 0xd4, 0x7a, 0x00, 0xa4, 0x3e, 0xc0, 0x68, 0x14, 0x20, 0xea, 0x01, 0x84, 0x79, 0x97, - 0x6a, 0x2f, 0x1a, 0xc4, 0xaf, 0x45, 0x9d, 0x42, 0xda, 0xb4, 0xd8, 0xd1, 0x4b, 0xb5, 0xe6, 0x87, - 0xd8, 0xde, 0x77, 0xbb, 0x53, 0x07, 0xec, 0xd9, 0x2f, 0xe2, 0x9f, 0xe3, 0x23, 0xd6, 0x9d, 0x3e, - 0x6e, 0x09, 0x49, 0xd0, 0x4d, 0x0e, 0xdd, 0xe8, 0xe3, 0xe3, 0xd1, 0x7b, 0xf2, 0x73, 0x41, 0x55, - 0x54, 0x39, 0xa0, 0xd2, 0x16, 0x2c, 0x1c, 0x4b, 0x9b, 0xca, 0x9e, 0xe3, 0xb0, 0xf8, 0x33, 0xf1, - 0xac, 0xe3, 0x9e, 0x15, 0xdf, 0xc3, 0x72, 0x89, 0xcf, 0xbc, 0x7b, 0x6b, 0x24, 0x32, 0x22, 0x91, - 0x08, 0xa6, 0x58, 0x09, 0x5c, 0xf1, 0xc7, 0x57, 0x2a, 0xfa, 0x14, 0x7a, 0x7a, 0x84, 0x6b, 0x63, - 0xeb, 0x74, 0xb2, 0x73, 0xda, 0xd9, 0x38, 0xdd, 0x48, 0xc7, 0x18, 0xdb, 0x66, 0x0c, 0xd6, 0x98, - 0x60, 0xd3, 0x16, 0x6b, 0x52, 0xe8, 0xea, 0xc1, 0x5d, 0x49, 0xd4, 0xb1, 0xb6, 0x9d, 0x91, 0xb2, - 0xf7, 0xf1, 0xa8, 0x9a, 0xd6, 0xee, 0x99, 0xc0, 0x39, 0xe4, 0xb6, 0x17, 0x48, 0xc6, 0x07, 0xb1, - 0x80, 0x51, 0x84, 0x71, 0x2a, 0x12, 0x84, 0x19, 0xa3, 0x4e, 0x2b, 0xb1, 0x7c, 0xa5, 0x35, 0x24, - 0xdc, 0xf1, 0xa8, 0x63, 0xf5, 0xef, 0x2d, 0x35, 0x64, 0xf2, 0x8a, 0x1f, 0xf7, 0xac, 0x54, 0xf6, - 0xe8, 0x7a, 0x2e, 0x3d, 0x22, 0x48, 0xbb, 0x28, 0x32, 0x21, 0x92, 0x8c, 0x89, 0xa6, 0x32, 0x8d, - 0x31, 0x23, 0x8e, 0x81, 0x72, 0x2d, 0x31, 0xcd, 0x8e, 0x80, 0xe5, 0xa2, 0x63, 0x0d, 0xb0, 0x24, - 0x06, 0xd9, 0x12, 0xfd, 0xac, 0x09, 0x28, 0xf6, 0xc4, 0xf4, 0xc1, 0x2d, 0x93, 0x4d, 0x29, 0xed, - 0x2c, 0x43, 0x63, 0x57, 0xf4, 0xca, 0x09, 0xfd, 0xa3, 0x5d, 0xaf, 0x06, 0xbb, 0x5c, 0x32, 0x9d, - 0x71, 0x9d, 0xd7, 0x46, 0xd6, 0xc3, 0x32, 0x19, 0x65, 0x97, 0x0a, 0x48, 0x86, 0xac, 0x4e, 0x8e, - 0x7c, 0xc7, 0x2c, 0xfb, 0x92, 0x65, 0xbb, 0x22, 0xa3, 0x32, 0x2e, 0xba, 0xa8, 0x46, 0x16, 0x33, - 0xdb, 0xcc, 0xce, 0x3f, 0x3f, 0x19, 0xe6, 0xa6, 0x62, 0x4f, 0xd0, 0x78, 0xb6, 0x39, 0x79, 0x6c, - 0x91, 0x39, 0xba, 0x3e, 0xe3, 0x6a, 0xe4, 0x33, 0x29, 0x72, 0x9b, 0x0e, 0x45, 0x4c, 0x84, 0xc2, - 0xa6, 0x40, 0x51, 0xe4, 0xa0, 0x0d, 0xda, 0x6b, 0x53, 0xfb, 0x3a, 0xa0, 0xba, 0xd9, 0xd3, 0x9e, - 0x97, 0x35, 0xa8, 0x50, 0x1e, 0x63, 0xf2, 0xfc, 0xe1, 0x7e, 0xe9, 0x6e, 0x99, 0x0c, 0x94, 0x73, - 0x86, 0x75, 0xd4, 0x27, 0x2d, 0xd0, 0x9a, 0x29, 0xaf, 0xea, 0x2c, 0x16, 0x6b, 0x58, 0x98, 0x1a, - 0xd0, 0x41, 0x05, 0x68, 0x33, 0xfd, 0x75, 0x59, 0x0c, 0xda, 0x4d, 0x7b, 0xed, 0xf0, 0x5f, 0xa7, - 0xe9, 0x5e, 0xae, 0xe7, 0xaa, 0x70, 0xec, 0x9d, 0xc6, 0xd6, 0x3f, 0x05, 0x5b, 0xfb, 0x3c, 0x2c, - 0x18, 0xed, 0xde, 0x0f, 0x02, 0x55, 0x0d, 0xec, 0xaa, 0x1d, 0xf8, 0x61, 0x02, 0x6f, 0x9c, 0xaa, - 0x47, 0x89, 0x1b, 0x0f, 0xfa, 0x50, 0x16, 0x82, 0xcc, 0xa1, 0x9c, 0x7d, 0x15, 0x15, 0x17, 0xf6, - 0xf1, 0x20, 0x28, 0x31, 0x51, 0x62, 0xa2, 0xc4, 0xcc, 0xb0, 0x5b, 0x0a, 0xf7, 0x60, 0xd1, 0xd0, - 0x63, 0x45, 0x53, 0x66, 0xa9, 0x06, 0xf7, 0x94, 0xce, 0xcc, 0xd0, 0x34, 0x9d, 0xaf, 0xa3, 0xa9, - 0x4e, 0x8f, 0xb1, 0x6c, 0x3d, 0xfd, 0xd9, 0x78, 0x1a, 0x48, 0x7a, 0xad, 0xa9, 0x97, 0x8f, 0x6b, - 0xd1, 0x6e, 0x37, 0xdb, 0xeb, 0xb7, 0x1c, 0x0b, 0x62, 0x0c, 0xaf, 0x4b, 0x15, 0x8a, 0x1a, 0x3d, - 0x3a, 0x1a, 0x3d, 0x38, 0x1a, 0x23, 0x34, 0xce, 0x8f, 0xf6, 0xad, 0xed, 0xdd, 0x7a, 0xd7, 0x4a, - 0xd8, 0x42, 0x4e, 0x55, 0x4a, 0xd4, 0x2f, 0x79, 0xd8, 0x86, 0x6e, 0x57, 0x4a, 0x39, 0x91, 0x1b, - 0xbf, 0x98, 0x6e, 0x3c, 0x91, 0x6b, 0x67, 0xd5, 0xac, 0x0b, 0x2f, 0x3e, 0xa6, 0x92, 0x97, 0x80, - 0x14, 0xe7, 0x94, 0x0d, 0x86, 0xfd, 0x40, 0xc8, 0xfc, 0xbc, 0xf8, 0xe3, 0x10, 0x48, 0x8d, 0x1b, - 0x93, 0xfc, 0x48, 0x8d, 0x97, 0x48, 0x8d, 0x4f, 0x76, 0x74, 0x71, 0xba, 0x24, 0x1d, 0xa9, 0x18, - 0x67, 0x52, 0x47, 0xce, 0x04, 0x39, 0x13, 0x08, 0x9c, 0x49, 0xd1, 0x18, 0xd6, 0xbc, 0x4e, 0xda, - 0x57, 0x37, 0x5d, 0x2e, 0xa7, 0xad, 0xe6, 0x63, 0xa8, 0xed, 0x38, 0xea, 0x3c, 0x96, 0xda, 0x8f, - 0x67, 0x19, 0x36, 0x0e, 0x86, 0xa6, 0x2f, 0x84, 0x2a, 0xd2, 0x17, 0x9a, 0xce, 0x0c, 0x04, 0xa6, - 0x6b, 0x8b, 0x5a, 0xd6, 0x5c, 0x3f, 0x06, 0xc3, 0xbf, 0x31, 0xfc, 0xbb, 0x2c, 0xf1, 0xa0, 0x47, - 0x4c, 0x68, 0x12, 0x17, 0xe9, 0x8b, 0x6a, 0xaf, 0xf7, 0xf2, 0x62, 0x8f, 0x8d, 0x2a, 0x0f, 0xaa, - 0xff, 0x17, 0x70, 0x9d, 0x21, 0xc4, 0x26, 0xaa, 0xff, 0x1b, 0xab, 0xf2, 0xbf, 0xf0, 0x1e, 0x19, - 0x9a, 0x8f, 0x47, 0x7c, 0xc3, 0xab, 0xab, 0xad, 0xeb, 0xdf, 0x2a, 0xcb, 0x16, 0x55, 0xbc, 0xe4, - 0xa5, 0x48, 0xb4, 0x33, 0x78, 0xfa, 0xa5, 0x8b, 0x0e, 0x9f, 0x95, 0xc7, 0xf8, 0xf7, 0xaa, 0x47, - 0xee, 0xa9, 0xd0, 0xde, 0x2e, 0xee, 0xb1, 0x8e, 0xd4, 0xec, 0x3d, 0x10, 0x63, 0x20, 0xc6, 0x40, - 0x8c, 0xb1, 0x74, 0x18, 0xe3, 0x94, 0x70, 0x87, 0xa8, 0x40, 0xdc, 0x6b, 0xcc, 0xdb, 0x34, 0x87, - 0x5b, 0xc2, 0xe1, 0xbd, 0x34, 0xd0, 0xc5, 0x08, 0x18, 0x5e, 0x99, 0x6e, 0x1b, 0xd4, 0x78, 0xd8, - 0xe8, 0x3e, 0xfd, 0x79, 0xf3, 0x37, 0x9d, 0x0d, 0x72, 0x50, 0xf5, 0x63, 0xbd, 0xae, 0xe5, 0xae, - 0xa7, 0x93, 0xfa, 0xcf, 0xd2, 0x4f, 0xb9, 0xfc, 0x83, 0xfa, 0xe6, 0xbb, 0xc0, 0x5c, 0xeb, 0x20, - 0x78, 0xf4, 0x11, 0x3b, 0x9a, 0xc0, 0x16, 0xf2, 0xb6, 0x4b, 0x05, 0xa2, 0x90, 0xb7, 0x2d, 0x1f, - 0xc8, 0x18, 0x28, 0xb0, 0xab, 0xb3, 0xa0, 0xee, 0x74, 0x01, 0xdd, 0x51, 0x65, 0xa4, 0x71, 0x19, - 0xdd, 0x49, 0x05, 0x25, 0x88, 0xa2, 0x74, 0x54, 0x82, 0x5e, 0x9b, 0x34, 0x1d, 0x0d, 0xb7, 0x64, - 0x8e, 0xb0, 0x06, 0x0a, 0x54, 0x14, 0xa8, 0x80, 0x04, 0x2a, 0x3a, 0xc2, 0x90, 0xa4, 0x42, 0x92, - 0x0a, 0x49, 0xaa, 0xa5, 0x21, 0x94, 0xd0, 0x11, 0x36, 0x4d, 0x2c, 0xa1, 0x23, 0xac, 0x1c, 0x36, - 0x0c, 0xfd, 0x40, 0xa8, 0x62, 0x51, 0xc5, 0xa2, 0x8a, 0x5d, 0x22, 0x15, 0x8b, 0x7e, 0x20, 0xf4, - 0x03, 0xad, 0x8b, 0xe6, 0x0b, 0x04, 0x1b, 0xe8, 0x4c, 0xa2, 0x4e, 0xe5, 0xf2, 0x68, 0x5c, 0xd4, - 0x70, 0xa8, 0xe1, 0x50, 0xc3, 0xad, 0x91, 0x11, 0x39, 0xf1, 0x3b, 0x56, 0xb5, 0x0a, 0x80, 0x27, - 0x0a, 0xa9, 0xa5, 0x71, 0xcc, 0x43, 0x1e, 0xf9, 0xe8, 0xd9, 0x4e, 0xf7, 0x3f, 0x28, 0xcf, 0xb6, - 0x86, 0xbe, 0xba, 0xd8, 0x2b, 0x26, 0x1b, 0x30, 0xc6, 0x5e, 0x31, 0x6f, 0xde, 0x7c, 0x2d, 0xaa, - 0x5a, 0xec, 0x34, 0x3a, 0x5d, 0x6b, 0x8f, 0x5b, 0x87, 0x6a, 0x38, 0xaa, 0xb4, 0x30, 0xae, 0x7a, - 0x6b, 0x9d, 0x53, 0x19, 0x78, 0x51, 0xd2, 0xd2, 0x05, 0x6b, 0x5d, 0x18, 0xae, 0x75, 0x91, 0x69, - 0x11, 0xb0, 0x02, 0x46, 0x99, 0x1a, 0xd0, 0xac, 0xe6, 0x2b, 0xa3, 0x8c, 0xf5, 0xe7, 0xc9, 0xbd, - 0xb0, 0x5e, 0x87, 0xa1, 0xe5, 0x5c, 0x86, 0x92, 0x1d, 0xf9, 0xe2, 0x42, 0x0a, 0xc5, 0x81, 0x14, - 0x2e, 0xd5, 0xd1, 0xc0, 0x52, 0x1d, 0x0b, 0xd4, 0x4a, 0x58, 0xc5, 0xfa, 0xed, 0xdd, 0x82, 0x55, - 0xac, 0x17, 0xc0, 0xc9, 0x61, 0x7d, 0x91, 0x85, 0xa0, 0x53, 0xac, 0xc9, 0xba, 0x0c, 0x55, 0xac, - 0xb1, 0xe8, 0x33, 0x0a, 0x18, 0x14, 0x30, 0x2b, 0x2b, 0x60, 0xb0, 0xe8, 0xf3, 0x33, 0x16, 0x12, - 0x8b, 0x3e, 0x63, 0xd1, 0xe7, 0x95, 0x5b, 0x0e, 0x2c, 0xfa, 0x9c, 0x71, 0x2c, 0x2c, 0xfa, 0x5c, - 0x78, 0x3c, 0x2c, 0xfa, 0xbc, 0x3a, 0x27, 0x12, 0x39, 0xd7, 0xd7, 0x38, 0xd7, 0x1c, 0x9e, 0x62, - 0x33, 0x7c, 0x6b, 0xc4, 0x79, 0xe4, 0xf7, 0xa9, 0xc8, 0xc1, 0x32, 0x3d, 0x82, 0xc1, 0xc7, 0x31, - 0xd6, 0xa4, 0x48, 0xb2, 0x8b, 0xcc, 0xeb, 0x4b, 0x86, 0x90, 0xbb, 0x32, 0xcc, 0x6b, 0xc1, 0x4a, - 0xad, 0x7a, 0x2a, 0xb4, 0xae, 0x5c, 0x81, 0x64, 0x17, 0xf9, 0x85, 0x92, 0x8e, 0xd5, 0x62, 0xf8, - 0x85, 0xc2, 0x05, 0x92, 0x8b, 0x3a, 0x3c, 0x66, 0x76, 0x5d, 0x31, 0xc7, 0xc7, 0xe3, 0x8b, 0x69, - 0x70, 0x80, 0xa4, 0x83, 0x25, 0xc6, 0x59, 0x31, 0x2c, 0x78, 0x8d, 0xa5, 0x43, 0x8c, 0x0b, 0x9c, - 0x32, 0x2c, 0x1c, 0xa0, 0x99, 0xee, 0x2e, 0x96, 0x0e, 0x79, 0xbe, 0xdb, 0x8a, 0x7b, 0x5c, 0x66, - 0xb4, 0x7e, 0x7d, 0xa5, 0x22, 0x6f, 0x8d, 0x15, 0xf1, 0x82, 0x12, 0x31, 0xbb, 0x84, 0x81, 0x5c, - 0x8f, 0x86, 0x5b, 0xa1, 0xa2, 0x5c, 0xe5, 0x38, 0xfb, 0xd2, 0xf7, 0xa8, 0x0a, 0xea, 0x16, 0x47, - 0xe6, 0x4f, 0x87, 0x43, 0x80, 0x8e, 0x00, 0x1d, 0x01, 0xba, 0x71, 0xbb, 0x58, 0xaf, 0x7d, 0xac, - 0xe9, 0x18, 0x22, 0x9c, 0x45, 0x38, 0x0b, 0x1b, 0xce, 0xea, 0x2b, 0xdc, 0x34, 0x51, 0x8a, 0x06, - 0xea, 0x37, 0xa5, 0x43, 0x63, 0x06, 0xee, 0xd2, 0x08, 0x03, 0x53, 0x42, 0xc1, 0xb8, 0x70, 0x30, - 0x2e, 0x24, 0x4c, 0x0a, 0x0b, 0x3d, 0x42, 0x43, 0x93, 0xf0, 0xd0, 0x6f, 0x13, 0xcf, 0xec, 0x56, - 0x7d, 0x65, 0x35, 0x67, 0x34, 0xfe, 0xb6, 0xde, 0x52, 0x10, 0x63, 0x93, 0x2a, 0x5e, 0xe6, 0xee, - 0x94, 0x09, 0xf5, 0xec, 0x17, 0xe3, 0x9f, 0x93, 0x94, 0x15, 0x2c, 0xc0, 0xbd, 0x1c, 0x27, 0x41, - 0x47, 0xe8, 0x90, 0x8c, 0xfa, 0x06, 0x15, 0xe0, 0x93, 0xd1, 0x51, 0x07, 0xa2, 0x0e, 0x44, 0x1d, - 0x88, 0x3a, 0x10, 0xac, 0x0e, 0xfc, 0xfa, 0xa8, 0x03, 0xff, 0xc7, 0x8e, 0x84, 0xa0, 0x5c, 0x6d, - 0x6c, 0x7e, 0xd8, 0xda, 0x7a, 0xa4, 0x1b, 0xaf, 0xc7, 0x97, 0x4c, 0xcb, 0x3d, 0xf9, 0xc2, 0xef, - 0xd2, 0x91, 0x1d, 0x7a, 0x87, 0xea, 0x14, 0xab, 0x7e, 0x2c, 0x77, 0xd5, 0x8f, 0x29, 0xca, 0xfc, - 0x09, 0x83, 0x0c, 0xb8, 0xab, 0x05, 0x96, 0x62, 0x47, 0x46, 0x0f, 0x19, 0x3d, 0x64, 0xf4, 0x90, - 0xd1, 0x43, 0x6b, 0x06, 0xad, 0x19, 0xb4, 0x66, 0x90, 0xd1, 0x43, 0x42, 0x0b, 0x09, 0x2d, 0x54, - 0x01, 0xa8, 0x02, 0x50, 0x05, 0x20, 0xa1, 0xb5, 0x14, 0x84, 0x16, 0xf2, 0x39, 0xa5, 0xf3, 0x39, - 0x6b, 0x54, 0xcb, 0x75, 0xb9, 0x23, 0x53, 0x75, 0x04, 0x6a, 0x5a, 0x59, 0x0a, 0x0d, 0xfe, 0x99, - 0xde, 0xfb, 0x5b, 0xfa, 0xa5, 0x73, 0xea, 0x2e, 0x73, 0x6c, 0x6c, 0x31, 0x0a, 0x4f, 0x0b, 0x75, - 0xa7, 0x2d, 0x16, 0xb6, 0x81, 0xb1, 0xb0, 0xe6, 0xa0, 0x16, 0xc6, 0xc2, 0x6a, 0xa3, 0xd8, 0x30, - 0x59, 0x6d, 0xce, 0x3f, 0x98, 0xac, 0x56, 0x9e, 0xed, 0x87, 0xbe, 0x00, 0x4c, 0x56, 0x7b, 0x7b, - 0xb7, 0x2d, 0x5f, 0xb2, 0x1a, 0x22, 0x65, 0x0d, 0x48, 0xb9, 0x80, 0xc9, 0x82, 0xa5, 0x5a, 0xe6, - 0x98, 0xe0, 0x4a, 0x2e, 0x64, 0x9e, 0xd5, 0xe8, 0x30, 0x56, 0x15, 0xe6, 0x9d, 0xc6, 0x85, 0xca, - 0xbb, 0x40, 0x1a, 0x17, 0xa6, 0x92, 0xa9, 0xaa, 0xf8, 0x5c, 0xab, 0x30, 0xdf, 0xd4, 0xbf, 0x3d, - 0x91, 0x73, 0x4c, 0x62, 0x85, 0x85, 0x37, 0x9d, 0xb9, 0xa7, 0x6e, 0xba, 0x23, 0xee, 0xbc, 0x55, - 0x17, 0x33, 0x1a, 0x64, 0x99, 0xf1, 0x51, 0x1e, 0x1c, 0x94, 0xbb, 0xda, 0x68, 0x5e, 0x5c, 0x53, - 0x18, 0xbf, 0x14, 0xc6, 0x29, 0x45, 0xaa, 0x85, 0xea, 0x3d, 0xb2, 0x59, 0x0d, 0x9e, 0xca, 0xb8, - 0x85, 0x23, 0x95, 0xf9, 0x4b, 0x43, 0x3d, 0x0e, 0xb1, 0x26, 0x95, 0xa1, 0xb0, 0x26, 0xbf, 0xb5, - 0xda, 0x35, 0xf9, 0x8b, 0x76, 0x63, 0x7e, 0x7e, 0x34, 0x30, 0xf5, 0x1c, 0x6b, 0x4f, 0x97, 0x7b, - 0xb0, 0x80, 0xd2, 0x6d, 0x98, 0x7a, 0xbe, 0x48, 0x72, 0x2a, 0x44, 0x72, 0xca, 0x04, 0x39, 0x15, - 0x62, 0xa0, 0x6a, 0x6a, 0x0f, 0x19, 0x88, 0x50, 0x0d, 0x31, 0x2e, 0x69, 0x79, 0x8e, 0xbf, 0x29, - 0x31, 0x60, 0x5c, 0x1c, 0x18, 0x17, 0x0b, 0x26, 0xc5, 0x83, 0x1e, 0x31, 0xa1, 0x49, 0x5c, 0xa4, - 0x2f, 0x6a, 0x2e, 0x2e, 0x89, 0x85, 0x37, 0x9d, 0xea, 0x18, 0x5b, 0x57, 0x79, 0x50, 0xfd, 0xbf, - 0x80, 0x53, 0x13, 0x41, 0x4a, 0x3b, 0x7a, 0x83, 0x94, 0x14, 0x15, 0x5c, 0x8b, 0xc7, 0xee, 0xc9, - 0xc0, 0x1b, 0x1b, 0xdd, 0x9f, 0x5f, 0x6b, 0xd5, 0x5d, 0x52, 0x75, 0xf7, 0xaa, 0x47, 0xd7, 0x3f, - 0x6a, 0xef, 0x5b, 0x0f, 0x9b, 0xdd, 0xcd, 0x8d, 0xe7, 0xbf, 0xeb, 0x6e, 0xfe, 0xa8, 0xbd, 0x6f, - 0x3f, 0x6c, 0x6c, 0xbc, 0xf0, 0x3f, 0xbf, 0xbf, 0x34, 0xc6, 0xe6, 0xcf, 0x8d, 0x8d, 0x8d, 0x46, - 0xfb, 0x6b, 0xad, 0xda, 0xbe, 0xfe, 0xd9, 0xf8, 0x5a, 0xab, 0xb6, 0xae, 0xe3, 0xef, 0x5c, 0xff, - 0xfc, 0x5a, 0xab, 0x5f, 0xff, 0x9e, 0x7c, 0x1c, 0xfd, 0xbd, 0x79, 0x75, 0xb5, 0xb5, 0xf9, 0xa3, - 0xf9, 0x30, 0xdf, 0x97, 0x37, 0x37, 0x37, 0xfe, 0xf5, 0xf5, 0xea, 0x2a, 0xfc, 0xf1, 0xf9, 0x21, - 0xfe, 0xfb, 0xe4, 0xe1, 0xfa, 0x3f, 0x9b, 0xbf, 0xeb, 0x3e, 0xc5, 0x1b, 0x1b, 0x5f, 0xff, 0xb7, - 0x7b, 0xfd, 0x9f, 0xee, 0xe6, 0x8f, 0xce, 0xc3, 0xe4, 0x73, 0xf2, 0xf7, 0xe6, 0xcf, 0x8d, 0xad, - 0xdf, 0xae, 0xae, 0xb6, 0xb6, 0x7e, 0xdb, 0x1c, 0xbd, 0xe0, 0xf8, 0x7b, 0xbf, 0x8d, 0xfe, 0xf7, - 0xf7, 0x6e, 0x77, 0xe6, 0x57, 0x9b, 0x1b, 0xff, 0xda, 0x32, 0xf0, 0x88, 0x8f, 0xf3, 0xdd, 0xbd, - 0xba, 0xda, 0xba, 0xfe, 0x4d, 0x9f, 0x18, 0xb8, 0xc6, 0x0c, 0xcb, 0xe5, 0x90, 0xa6, 0x3a, 0xe2, - 0xbb, 0x47, 0x5a, 0xae, 0xea, 0x51, 0x3e, 0x48, 0xf8, 0x74, 0xcd, 0xf0, 0xe9, 0xe9, 0xf0, 0x88, - 0xa4, 0x10, 0x49, 0x21, 0x92, 0x5a, 0x3a, 0x24, 0x75, 0x4a, 0xb8, 0x43, 0x54, 0x20, 0xee, 0x8b, - 0xb3, 0x10, 0x25, 0xa0, 0xb3, 0x88, 0x71, 0xb5, 0x63, 0x00, 0x8e, 0xb5, 0x35, 0x0e, 0xa9, 0xa7, - 0xad, 0xd8, 0xf3, 0x3f, 0x7a, 0x4f, 0xa8, 0xa5, 0xbb, 0xed, 0xd8, 0xcc, 0xe0, 0x93, 0xd6, 0x57, - 0xb5, 0xf7, 0x66, 0xc6, 0x37, 0xd5, 0x06, 0x6b, 0x76, 0xeb, 0xe9, 0x6e, 0x8b, 0x65, 0xe8, 0x24, - 0x3f, 0x3b, 0xd5, 0x77, 0xe6, 0x97, 0xb6, 0xde, 0xd8, 0xc1, 0xc5, 0x2d, 0x45, 0xd8, 0xeb, 0x1f, - 0x0d, 0x71, 0x3c, 0x66, 0xd6, 0x2c, 0x73, 0x66, 0x4d, 0xe7, 0x43, 0xea, 0xfa, 0x9f, 0x7c, 0x02, - 0x5c, 0x22, 0x45, 0x03, 0x39, 0xad, 0x8f, 0x94, 0x5e, 0x9b, 0x80, 0x68, 0xf4, 0x39, 0x2d, 0xab, - 0x29, 0xb4, 0x6a, 0x01, 0xd1, 0xfa, 0x92, 0x59, 0x75, 0x26, 0xb1, 0xa6, 0xc9, 0xab, 0x5b, 0x5b, - 0x49, 0x4e, 0x69, 0xd8, 0x1d, 0x49, 0xd0, 0xf1, 0x0f, 0x45, 0x17, 0x12, 0xab, 0x4d, 0x3d, 0x5f, - 0xb3, 0x55, 0xaf, 0x36, 0x85, 0x02, 0x15, 0x05, 0xea, 0x4b, 0x2f, 0x84, 0x4e, 0xfc, 0x45, 0xe2, - 0x27, 0x13, 0xc7, 0xde, 0xd8, 0xf1, 0x37, 0x25, 0x06, 0x8c, 0x8b, 0x03, 0xe3, 0x62, 0xc1, 0xa4, - 0x78, 0xd0, 0xcb, 0x1f, 0xa0, 0x13, 0x1f, 0x9d, 0xf8, 0xe8, 0xc4, 0x47, 0x27, 0xfe, 0x52, 0xf8, - 0xb0, 0x03, 0xc1, 0x06, 0x1a, 0xfd, 0x18, 0x8f, 0x0a, 0x6f, 0x34, 0x2e, 0x42, 0x07, 0x84, 0x0e, - 0x08, 0x1d, 0xd6, 0x0a, 0x3a, 0xa4, 0xc0, 0x41, 0xab, 0x08, 0x78, 0x82, 0x1b, 0x5a, 0x1a, 0xc7, - 0x3c, 0xe4, 0x91, 0x8f, 0x81, 0x49, 0x99, 0xd6, 0x18, 0x03, 0x93, 0x50, 0xc4, 0xa3, 0x88, 0x5f, - 0x72, 0x11, 0x8f, 0x81, 0x49, 0x18, 0x98, 0x64, 0xe0, 0x0f, 0x06, 0x26, 0x95, 0x7d, 0x92, 0x9f, - 0x9d, 0x6a, 0x0c, 0x4c, 0x5a, 0x8e, 0xc5, 0x5d, 0xed, 0xc0, 0xa4, 0xe5, 0xa8, 0x9f, 0xae, 0x88, - 0x8a, 0xa4, 0x81, 0xca, 0xe9, 0xa3, 0x71, 0x11, 0xb8, 0x22, 0x70, 0x45, 0xe0, 0xba, 0x46, 0xdc, - 0x04, 0xe5, 0x91, 0x4f, 0xc5, 0x28, 0x5c, 0x6f, 0xbd, 0x58, 0x09, 0x4d, 0x4b, 0x43, 0xef, 0x94, - 0x20, 0xd5, 0x88, 0x4b, 0x45, 0xfa, 0x9e, 0xe6, 0x45, 0x12, 0xd4, 0xa5, 0x82, 0x72, 0x1b, 0x04, - 0xc2, 0x9e, 0xec, 0xa8, 0xf3, 0xa3, 0x7d, 0xab, 0xd5, 0xd8, 0x6d, 0x76, 0xad, 0x53, 0xc2, 0xc9, - 0x80, 0xc6, 0x07, 0xd4, 0x3a, 0xe6, 0x6e, 0x20, 0xfc, 0x64, 0x9b, 0x59, 0x1f, 0x89, 0xa4, 0x96, - 0x1b, 0x08, 0x4b, 0x0d, 0xe9, 0x15, 0x9f, 0x1a, 0x22, 0x29, 0x82, 0xc6, 0xa9, 0xb2, 0x7a, 0x22, - 0x50, 0x81, 0x1d, 0x78, 0xd6, 0xc6, 0x71, 0x6f, 0xf3, 0xc9, 0x57, 0xaa, 0xd6, 0x71, 0xb8, 0x37, - 0xe2, 0xd2, 0x2e, 0x12, 0x8d, 0x75, 0xb9, 0x7f, 0xc5, 0xad, 0xe4, 0x96, 0x3b, 0x9d, 0x46, 0xd7, - 0x3a, 0xee, 0xdd, 0x74, 0xac, 0xf8, 0x7f, 0xa8, 0x47, 0xa5, 0xb4, 0xc6, 0x5f, 0xb5, 0xf6, 0xa2, - 0x78, 0xbc, 0x58, 0x89, 0x44, 0xda, 0xf7, 0xba, 0x69, 0x39, 0xfd, 0x92, 0xbc, 0x7e, 0xdc, 0x18, - 0x86, 0xb0, 0xa2, 0x69, 0xd1, 0xfd, 0xa2, 0x08, 0x87, 0xb1, 0x73, 0x10, 0x36, 0x97, 0x0d, 0x9b, - 0x31, 0x9c, 0x7d, 0xde, 0x70, 0xf6, 0xc5, 0x76, 0x88, 0x28, 0x10, 0x82, 0x79, 0x23, 0x84, 0xc6, - 0x78, 0xf6, 0x64, 0x34, 0xac, 0xa2, 0x54, 0x9a, 0xa9, 0x82, 0x01, 0x98, 0x18, 0x80, 0xf9, 0xcb, - 0xa3, 0x5d, 0x1d, 0x88, 0x20, 0x32, 0x10, 0x88, 0x39, 0x35, 0xb6, 0x5e, 0xe6, 0xa2, 0x8e, 0xcc, - 0x05, 0x32, 0x17, 0xc8, 0x5c, 0x14, 0x7f, 0x51, 0x5d, 0x62, 0x24, 0x1d, 0x50, 0x53, 0xcd, 0xc5, - 0x57, 0x0f, 0x81, 0x96, 0x1a, 0x8c, 0x86, 0xc5, 0x8a, 0x31, 0xf1, 0x62, 0x52, 0xcc, 0x18, 0x17, - 0x37, 0x8b, 0x30, 0xc4, 0x8d, 0x88, 0x9f, 0xc5, 0x5a, 0xe1, 0x9a, 0xc5, 0x91, 0x21, 0x2b, 0x57, - 0xf3, 0x7e, 0xd7, 0x2d, 0xa6, 0xd2, 0x81, 0x89, 0x6d, 0xd3, 0x50, 0x55, 0xfd, 0xc0, 0x31, 0xb8, - 0x21, 0xd3, 0xfa, 0xcd, 0x53, 0x37, 0x33, 0xb4, 0x53, 0x74, 0x76, 0x72, 0x7a, 0xf5, 0x26, 0x1a, - 0x3a, 0x3c, 0xbd, 0x4a, 0x6a, 0x18, 0x9a, 0x17, 0xbd, 0x1e, 0xaf, 0xd2, 0x04, 0x7d, 0x19, 0x02, - 0xbf, 0x34, 0xc1, 0x5f, 0x96, 0x02, 0x28, 0x5d, 0x11, 0x94, 0xae, 0x10, 0xca, 0x54, 0x0c, 0x66, - 0x14, 0x84, 0x21, 0x45, 0x91, 0x4e, 0x8c, 0x76, 0x8f, 0xdc, 0xab, 0xa7, 0x45, 0x5f, 0x67, 0xac, - 0x37, 0xd1, 0x69, 0x1d, 0xd4, 0x12, 0x18, 0xaa, 0xf0, 0x32, 0x73, 0x1f, 0xe3, 0x15, 0x5f, 0xcc, - 0x9f, 0x04, 0x13, 0x61, 0x57, 0xc4, 0xb9, 0xa1, 0x42, 0x31, 0x99, 0xb8, 0x69, 0x46, 0xe4, 0xf5, - 0x0d, 0xf1, 0x4a, 0x00, 0x39, 0x2f, 0xdf, 0x17, 0x32, 0xde, 0xa9, 0xd7, 0x6a, 0x88, 0x76, 0x10, - 0xed, 0x20, 0xda, 0x41, 0xb4, 0xb3, 0xee, 0x68, 0x27, 0x62, 0x5c, 0xd5, 0x3b, 0x25, 0x80, 0x9d, - 0x8e, 0xc1, 0x5b, 0x98, 0x89, 0x8a, 0x7f, 0xfe, 0xc7, 0xec, 0x71, 0xb7, 0x4c, 0x47, 0xcd, 0xcf, - 0xdc, 0x2c, 0x0d, 0xb5, 0x7e, 0x5f, 0xce, 0xfd, 0xca, 0x0a, 0xbc, 0x9e, 0xdd, 0xeb, 0xa6, 0x03, - 0xb1, 0x4b, 0x12, 0x0b, 0x4f, 0xb7, 0x0a, 0xb9, 0x2b, 0x7f, 0xab, 0xb4, 0x6a, 0xbb, 0x6d, 0xdc, - 0x2d, 0x20, 0x54, 0x93, 0xf9, 0xd1, 0xaf, 0xd1, 0x7a, 0x45, 0xeb, 0x75, 0xde, 0x69, 0x09, 0x05, - 0xa5, 0x7e, 0xa8, 0xcc, 0x9b, 0xab, 0x93, 0x1b, 0x41, 0xb6, 0x4f, 0x63, 0xe8, 0x8d, 0x06, 0x2a, - 0x1a, 0xa8, 0x68, 0xa0, 0xa2, 0x81, 0xba, 0xee, 0x06, 0x2a, 0xd2, 0xf1, 0x08, 0x68, 0x96, 0x18, - 0xd0, 0x54, 0x1d, 0xea, 0x91, 0xfb, 0xd2, 0x60, 0xcd, 0xf8, 0x76, 0x90, 0xc1, 0x0d, 0x52, 0xef, - 0x88, 0x6c, 0x10, 0xd9, 0x20, 0xb2, 0x59, 0x7b, 0x64, 0x83, 0xd4, 0xfb, 0xdc, 0x7f, 0x56, 0x95, - 0x7a, 0xaf, 0x21, 0x99, 0x0a, 0x43, 0x2c, 0x3c, 0xdd, 0x2a, 0x8b, 0xa0, 0xde, 0x9b, 0x9d, 0x1a, - 0xee, 0x16, 0x18, 0xaa, 0xc9, 0xfc, 0xe8, 0x48, 0xbd, 0xa3, 0xa5, 0x9a, 0xc1, 0x52, 0x65, 0x81, - 0x60, 0xaa, 0x14, 0x23, 0x75, 0x7c, 0x27, 0x0c, 0x0e, 0x43, 0x0b, 0x15, 0x2d, 0x54, 0xb4, 0x50, - 0xd1, 0x42, 0x05, 0x6f, 0xa1, 0xee, 0x94, 0x60, 0xa0, 0xb6, 0xd1, 0x40, 0x5d, 0x52, 0x03, 0x15, - 0x63, 0xc3, 0xd0, 0x40, 0x9d, 0x73, 0xab, 0x34, 0xda, 0x2d, 0xdc, 0x2c, 0x68, 0x9f, 0xa2, 0x7d, - 0x8a, 0xf6, 0x69, 0xb6, 0x69, 0xb9, 0x61, 0x42, 0x45, 0xc4, 0x9b, 0xf4, 0xec, 0x30, 0x6f, 0xa6, - 0x3e, 0xbf, 0x21, 0xda, 0x65, 0x68, 0x97, 0xa1, 0x5d, 0x86, 0x76, 0x19, 0x18, 0xbb, 0xec, 0xb1, - 0xc1, 0x51, 0x19, 0x61, 0x51, 0xbb, 0x06, 0xef, 0x31, 0x9e, 0x33, 0xf0, 0xc6, 0xd9, 0x54, 0xd7, - 0xca, 0x56, 0x09, 0x6b, 0x33, 0xb3, 0x46, 0x3b, 0x25, 0xdc, 0xcb, 0x54, 0x77, 0xcb, 0x57, 0x6f, - 0x38, 0xea, 0x62, 0x79, 0xfd, 0xf3, 0x6b, 0xbd, 0xba, 0x3b, 0xee, 0x34, 0x59, 0x4f, 0xfe, 0x19, - 0x7d, 0x9e, 0xee, 0x40, 0x39, 0xee, 0x4a, 0x99, 0x76, 0xa9, 0xcc, 0x7c, 0xe1, 0x4b, 0xfd, 0x2a, - 0x8d, 0xbf, 0xe5, 0xf5, 0x3b, 0xc0, 0x96, 0x66, 0xb9, 0xa7, 0xaa, 0x83, 0xa7, 0x4a, 0xdb, 0xa9, - 0xc2, 0x5e, 0xb2, 0x59, 0x44, 0x90, 0xf6, 0x1e, 0xb3, 0xd0, 0xc5, 0x0a, 0xb2, 0x06, 0xc9, 0xd6, - 0x38, 0x61, 0x52, 0xed, 0x29, 0x25, 0xcc, 0x42, 0xbe, 0x53, 0xc6, 0x0f, 0xbd, 0xa4, 0xf4, 0x86, - 0x61, 0xa2, 0xab, 0x72, 0x4a, 0xee, 0xa6, 0xee, 0x54, 0xdf, 0x69, 0xb5, 0x3a, 0xdb, 0xad, 0x56, - 0x6d, 0xbb, 0xb9, 0x5d, 0xdb, 0x6d, 0xb7, 0xeb, 0x9d, 0xba, 0x49, 0x96, 0xfe, 0x4c, 0x38, 0x54, - 0x50, 0xe7, 0xe3, 0x7d, 0xa5, 0x6b, 0xf1, 0xc8, 0xf3, 0x90, 0x3f, 0x42, 0xfe, 0x28, 0x2b, 0x7f, - 0xe4, 0x31, 0xfe, 0xbd, 0xea, 0x05, 0x76, 0x19, 0x45, 0x71, 0x5e, 0xb8, 0x27, 0xb2, 0x48, 0xc8, - 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, 0x48, 0xc8, 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, - 0x48, 0xc8, 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, 0x48, 0xc8, 0x22, 0x21, 0x77, 0xb0, 0xe4, - 0xdc, 0x41, 0xd2, 0xeb, 0x4d, 0x54, 0x99, 0x53, 0x1e, 0x75, 0xf0, 0x78, 0x4b, 0x64, 0x0e, 0x90, - 0x39, 0x40, 0xe6, 0x00, 0x99, 0x03, 0x30, 0xcc, 0x01, 0xe6, 0x05, 0x2c, 0x91, 0x79, 0x83, 0x79, - 0x01, 0x46, 0xb6, 0x3a, 0xe6, 0x05, 0x68, 0xda, 0x2a, 0x8d, 0x36, 0x96, 0x8c, 0x85, 0x63, 0x3d, - 0xa1, 0x6d, 0x86, 0xb6, 0xd9, 0xc2, 0x47, 0xd4, 0xdd, 0x6d, 0x6e, 0x2f, 0x1a, 0xc4, 0x88, 0x91, - 0x3a, 0x46, 0xf4, 0xbd, 0x61, 0x7b, 0xf1, 0x43, 0x0c, 0x72, 0xdd, 0xee, 0x54, 0x8b, 0xf2, 0x67, - 0xbf, 0x88, 0x7f, 0xbe, 0xf1, 0x08, 0xef, 0x4e, 0x37, 0x2c, 0x4f, 0x90, 0x71, 0x37, 0x69, 0x5b, - 0x3e, 0xfa, 0xf8, 0xd8, 0xbc, 0xfc, 0xc9, 0xcf, 0x1f, 0x6e, 0x84, 0x08, 0x3f, 0x3c, 0xf6, 0xf5, - 0xfd, 0x60, 0xa4, 0x1f, 0x67, 0xfa, 0x52, 0x07, 0x54, 0xda, 0x82, 0x85, 0xe3, 0x33, 0x55, 0xd9, - 0x73, 0x1c, 0x16, 0x7f, 0x26, 0x9e, 0xf5, 0xe5, 0xfc, 0xbc, 0x67, 0x39, 0x44, 0x11, 0xcb, 0x0d, - 0x84, 0x75, 0xdc, 0xbb, 0xe9, 0x58, 0x8f, 0xaf, 0x6c, 0xd8, 0x44, 0xae, 0xa3, 0x89, 0x8c, 0x26, - 0x32, 0x9a, 0xc8, 0xab, 0x6f, 0x22, 0x9b, 0x6a, 0x3b, 0x9a, 0xde, 0xa0, 0xc4, 0x58, 0xa4, 0x99, - 0x03, 0x5a, 0x5a, 0x4c, 0xd2, 0x6b, 0xd2, 0xfc, 0x28, 0x10, 0x23, 0x31, 0x1e, 0xf0, 0xe7, 0x02, - 0xfc, 0xbd, 0x25, 0xa9, 0x92, 0x96, 0x1a, 0x52, 0x6b, 0xfc, 0x98, 0x56, 0xfc, 0x98, 0x56, 0xf2, - 0x98, 0x57, 0xbc, 0x1c, 0xaf, 0x9c, 0x61, 0x46, 0xb4, 0x34, 0xb1, 0x5f, 0xa6, 0xf8, 0x2f, 0x5d, - 0x0d, 0x94, 0xad, 0x0e, 0x16, 0xa6, 0x16, 0x16, 0xa6, 0x1e, 0x16, 0xa1, 0x26, 0x4a, 0x32, 0x5c, - 0x0d, 0x9f, 0x37, 0xe3, 0x0c, 0xeb, 0xcc, 0x69, 0x2b, 0x25, 0x46, 0x6b, 0x06, 0x0e, 0xef, 0x96, - 0x70, 0xaf, 0x52, 0x62, 0xb6, 0xcc, 0x9a, 0x68, 0x6f, 0xac, 0x5c, 0xa9, 0x31, 0x5c, 0x33, 0x6b, - 0xb8, 0x53, 0xe2, 0x3d, 0xcb, 0x8e, 0x3e, 0x49, 0x6f, 0xbc, 0xf2, 0xb1, 0x5d, 0x66, 0x89, 0xb3, - 0x92, 0xe5, 0xe7, 0x62, 0x4f, 0x63, 0x07, 0x4f, 0xa3, 0xf1, 0xd3, 0x88, 0x31, 0x61, 0x79, 0x44, - 0x18, 0xbc, 0xd8, 0xb0, 0x92, 0xc5, 0x12, 0xc6, 0xba, 0x95, 0xcb, 0xbe, 0x2c, 0xb9, 0x7b, 0xe0, - 0x5a, 0xb7, 0x7b, 0xc0, 0xac, 0x9f, 0xa7, 0x22, 0xed, 0x21, 0xf5, 0x49, 0x48, 0xd4, 0x70, 0xc4, - 0xe7, 0x87, 0x94, 0x8f, 0x58, 0xf6, 0xea, 0x14, 0xa9, 0xff, 0xd2, 0xc7, 0x0f, 0xd3, 0x8c, 0x7e, - 0xc2, 0xe5, 0x3f, 0xb2, 0xf8, 0x6f, 0xf0, 0xf7, 0xef, 0x96, 0x73, 0xf9, 0x34, 0x22, 0x8c, 0x4a, - 0x3a, 0x4d, 0x55, 0x25, 0x88, 0xfd, 0x9d, 0xf1, 0x81, 0xf6, 0xe5, 0x7b, 0xc4, 0x0f, 0xb3, 0xf7, - 0xd2, 0xbc, 0x09, 0xcd, 0xb8, 0x22, 0x8c, 0x71, 0x51, 0x26, 0xb9, 0x27, 0xe3, 0x5c, 0x93, 0x69, - 0x6e, 0xa9, 0x34, 0x2e, 0xa9, 0x34, 0xee, 0xa8, 0x0c, 0xae, 0x68, 0xb9, 0x7d, 0xc8, 0xa6, 0x5c, - 0x07, 0x15, 0x7b, 0x72, 0x42, 0x0d, 0xfb, 0x91, 0xcd, 0x3a, 0x76, 0xd1, 0x93, 0xba, 0x78, 0xb1, - 0x56, 0x96, 0x78, 0x2b, 0x5d, 0xcc, 0x95, 0x2e, 0xee, 0xca, 0x14, 0x7b, 0x86, 0xb1, 0x3c, 0x54, - 0x4f, 0xea, 0xa4, 0x97, 0x44, 0xd5, 0xa1, 0xb6, 0xa0, 0xe3, 0x35, 0x28, 0xc9, 0x93, 0xfa, 0xc2, - 0xbd, 0x8d, 0x7b, 0x52, 0xcd, 0x77, 0xb6, 0x48, 0x6f, 0x56, 0x33, 0x4b, 0x10, 0x5c, 0xa3, 0x17, - 0x77, 0xd9, 0x54, 0x4f, 0xe9, 0x2a, 0xa8, 0x6c, 0x55, 0xb4, 0x30, 0x95, 0xb4, 0x30, 0xd5, 0xb4, - 0x08, 0x15, 0x65, 0x9e, 0xd0, 0xb2, 0x56, 0xd2, 0x8b, 0x6b, 0x3a, 0x5f, 0xe6, 0xb9, 0x68, 0x2c, - 0x21, 0xe0, 0xbe, 0xa4, 0xfc, 0x99, 0xc9, 0x9f, 0x12, 0x5d, 0x46, 0x65, 0xe6, 0xd3, 0xa4, 0x37, - 0x2d, 0xb9, 0x21, 0x64, 0x7a, 0xdf, 0x45, 0xa5, 0x4c, 0x3c, 0x1e, 0x91, 0xb2, 0x53, 0x27, 0x4a, - 0x92, 0x32, 0x4f, 0xb7, 0x54, 0x89, 0x79, 0x37, 0x33, 0x5b, 0xaa, 0xb4, 0xbe, 0x1c, 0xb8, 0xa9, - 0x4a, 0xf0, 0x54, 0x59, 0xab, 0xe0, 0x0f, 0x33, 0x6d, 0xb4, 0x97, 0x93, 0xb7, 0x93, 0xde, 0xaf, - 0xf4, 0xfc, 0x1d, 0xf3, 0x1b, 0xc1, 0xe0, 0x12, 0x55, 0x12, 0x0f, 0xca, 0xa3, 0xeb, 0xab, 0x3c, - 0xb3, 0xfe, 0xf9, 0x8d, 0xd1, 0x4e, 0x45, 0x3b, 0x15, 0xed, 0x54, 0xb4, 0x53, 0xd1, 0x4e, 0x1d, - 0x9f, 0xb6, 0x58, 0x6b, 0x09, 0xea, 0x96, 0x19, 0x6a, 0xbc, 0x5d, 0x4e, 0x71, 0xb4, 0xe1, 0xdc, - 0x99, 0x94, 0xcc, 0xed, 0xf2, 0x78, 0x3a, 0x10, 0x01, 0xad, 0x39, 0x02, 0xc2, 0x54, 0xf5, 0x17, - 0xee, 0x53, 0x6a, 0x28, 0xd3, 0x6c, 0xd0, 0x8d, 0x91, 0xe8, 0x26, 0x73, 0x2b, 0x6e, 0xa2, 0x62, - 0x99, 0x54, 0x44, 0x51, 0xf3, 0xd1, 0x02, 0xa3, 0xdb, 0x00, 0x0f, 0x16, 0x68, 0x60, 0xb0, 0xc0, - 0xd2, 0x20, 0x5f, 0x0c, 0x16, 0x58, 0x5f, 0xed, 0x84, 0xc1, 0x02, 0x7a, 0xa7, 0x13, 0x83, 0x05, - 0x90, 0x84, 0x41, 0x12, 0x06, 0x49, 0x18, 0x24, 0x61, 0x30, 0x58, 0xa0, 0xb0, 0x68, 0xc4, 0x60, - 0x81, 0x02, 0x2f, 0x86, 0xc1, 0x02, 0x65, 0x3e, 0x00, 0x06, 0x0b, 0x98, 0xde, 0x52, 0x18, 0x2c, - 0x80, 0xc1, 0x02, 0x99, 0x21, 0x3c, 0xfa, 0xb8, 0x67, 0x36, 0x15, 0xfa, 0xb8, 0xd1, 0xbc, 0x42, - 0xf3, 0x0a, 0xcd, 0x2b, 0x34, 0xaf, 0x96, 0xcd, 0xbc, 0x42, 0x1f, 0x77, 0x59, 0x3e, 0x6e, 0x24, - 0xbf, 0xad, 0x75, 0x72, 0xcd, 0x8e, 0x3c, 0x86, 0x58, 0xaf, 0x7c, 0xf9, 0xb7, 0xcc, 0xa2, 0xb7, - 0x4a, 0xc5, 0x88, 0x5b, 0x5c, 0x44, 0xb6, 0xe2, 0x63, 0x21, 0x7f, 0x3c, 0xb9, 0xe7, 0xb7, 0xf3, - 0xe4, 0x81, 0xbf, 0x78, 0x84, 0x7f, 0x3b, 0x0e, 0x6f, 0x3a, 0xdf, 0xf6, 0x46, 0x4f, 0xf9, 0xed, - 0x8b, 0x10, 0xe1, 0xa7, 0xf8, 0xf9, 0xbe, 0xa5, 0xdf, 0xbd, 0x9c, 0x3c, 0xde, 0x1a, 0xd4, 0x4e, - 0x31, 0x13, 0x45, 0x60, 0x34, 0x7a, 0xc0, 0x78, 0x85, 0x94, 0x06, 0x56, 0x48, 0x29, 0xcd, 0x56, - 0xc0, 0x0a, 0x29, 0xab, 0xa7, 0xb5, 0x8c, 0x55, 0x48, 0x21, 0xb6, 0x4d, 0x43, 0x55, 0xf5, 0x03, - 0xa7, 0x84, 0xc0, 0xa7, 0xe9, 0x9b, 0x19, 0x6b, 0x82, 0x61, 0xde, 0x7f, 0x5f, 0x49, 0xb8, 0x4c, - 0x33, 0x70, 0xec, 0x1a, 0x1b, 0x56, 0x2e, 0x8a, 0x3c, 0xc2, 0xb0, 0x30, 0x70, 0xe4, 0x10, 0x86, - 0x85, 0x2d, 0x8c, 0xfc, 0x49, 0x4f, 0x4b, 0x3f, 0x08, 0x3c, 0x4a, 0x78, 0x09, 0x2d, 0x2b, 0xeb, - 0xf5, 0x35, 0x8e, 0x4d, 0x26, 0xce, 0x0d, 0x15, 0x8a, 0xc9, 0x24, 0x0a, 0x6e, 0x64, 0x4b, 0xde, - 0x18, 0xec, 0x80, 0xf2, 0xa8, 0xb3, 0x5f, 0xbe, 0x2f, 0x64, 0xf5, 0x5d, 0xaf, 0xd5, 0x50, 0x79, - 0xa3, 0xf2, 0x46, 0xe5, 0x8d, 0xca, 0x7b, 0xdd, 0x95, 0x77, 0xc4, 0xb8, 0xaa, 0x77, 0x4a, 0xd0, - 0xdd, 0x1d, 0x6c, 0x37, 0xfd, 0xf6, 0x8b, 0x60, 0xbb, 0x69, 0x23, 0x7b, 0x1d, 0xdb, 0x4d, 0x6b, - 0xda, 0x2a, 0xad, 0xda, 0x2e, 0xf6, 0x9b, 0x86, 0xa1, 0x9a, 0xcc, 0x8f, 0x7e, 0xbd, 0xc6, 0xc6, - 0x98, 0x1d, 0x09, 0x11, 0x9b, 0x43, 0x93, 0xfc, 0xa4, 0x12, 0x2a, 0x4c, 0x3f, 0xbf, 0x23, 0x9a, - 0x1a, 0x68, 0x6a, 0xa0, 0xa9, 0x81, 0xa6, 0x06, 0x28, 0x53, 0x63, 0xa7, 0x04, 0x4b, 0xa3, 0x8d, - 0x96, 0xc6, 0x92, 0x5a, 0x1a, 0x35, 0xc4, 0x8e, 0x68, 0x69, 0xcc, 0xb7, 0x55, 0x1a, 0x6d, 0x34, - 0x34, 0xd0, 0xd0, 0x40, 0x43, 0x23, 0x14, 0x94, 0xfa, 0xa1, 0x32, 0x6f, 0x5f, 0x4c, 0x6e, 0x04, - 0xd9, 0xaf, 0x13, 0xe3, 0x48, 0x74, 0xec, 0xa0, 0xb5, 0x85, 0xd6, 0x16, 0x5a, 0x5b, 0xeb, 0x6e, - 0x6d, 0x61, 0x54, 0x46, 0x99, 0xfa, 0xb9, 0xea, 0x50, 0x8f, 0xdc, 0x97, 0xa6, 0xa5, 0xc7, 0xb7, - 0x83, 0xac, 0xab, 0x31, 0x02, 0x03, 0x15, 0x35, 0x2a, 0x6a, 0x54, 0xd4, 0x6b, 0xaf, 0xa8, 0x31, - 0x02, 0x63, 0xee, 0x3f, 0xc8, 0x8b, 0x16, 0xbb, 0x1f, 0xf2, 0xa2, 0x5a, 0xb7, 0xca, 0x22, 0x78, - 0xd1, 0x66, 0xa7, 0x86, 0xbb, 0x05, 0x86, 0x6a, 0x32, 0x3f, 0xfa, 0x7a, 0x13, 0xa3, 0x65, 0x45, - 0x5e, 0x98, 0x8e, 0xb8, 0xc0, 0x90, 0x77, 0x34, 0xb8, 0xd0, 0xe0, 0x42, 0x83, 0x0b, 0x0d, 0x2e, - 0x8c, 0x43, 0x41, 0x7b, 0xab, 0x0c, 0x10, 0x8d, 0x11, 0xef, 0x68, 0x6f, 0xcd, 0xb9, 0x55, 0x4a, - 0xab, 0xd9, 0x8a, 0xe6, 0x16, 0x9a, 0x5b, 0x4b, 0x6c, 0x6e, 0xdd, 0x30, 0xa1, 0x22, 0xe2, 0x55, - 0xc7, 0x85, 0xa8, 0xcc, 0x5b, 0x5d, 0xcf, 0x6f, 0x88, 0x66, 0x06, 0x9a, 0x19, 0x68, 0x66, 0xa0, - 0x99, 0x01, 0xc6, 0xcc, 0x60, 0xa1, 0x61, 0xd9, 0x35, 0x2d, 0xbf, 0xea, 0xbb, 0x06, 0xef, 0x31, - 0x9e, 0x33, 0xf0, 0xb6, 0xc6, 0xe3, 0xca, 0xdc, 0xb4, 0x4a, 0x58, 0x9b, 0x99, 0x35, 0xda, 0x29, - 0xa7, 0x54, 0xad, 0xa2, 0x82, 0x97, 0xd6, 0x0e, 0xa4, 0xb2, 0xb1, 0xf1, 0xb5, 0x56, 0xdd, 0xbd, - 0xfe, 0xf9, 0xb5, 0x5e, 0xdd, 0xbd, 0x1e, 0x7d, 0xac, 0x27, 0xff, 0x8c, 0x3e, 0x37, 0xbe, 0xd6, - 0xaa, 0xad, 0xc9, 0xe7, 0xf6, 0xd7, 0x5a, 0xb5, 0x7d, 0xbd, 0x79, 0x75, 0xb5, 0xb5, 0xf9, 0xa3, - 0xf9, 0x90, 0xfd, 0xc2, 0x8d, 0x7f, 0x7d, 0xbd, 0xba, 0x0a, 0x7f, 0x7c, 0x7e, 0x88, 0xff, 0x3e, - 0x79, 0xb8, 0xfe, 0xcf, 0xe6, 0xef, 0x15, 0x6c, 0xd7, 0xbf, 0x3c, 0xa7, 0xaa, 0x83, 0xa7, 0x4a, - 0xdb, 0xa9, 0xea, 0xfe, 0x8c, 0xf7, 0x3e, 0xa9, 0xba, 0x7b, 0xd5, 0xa3, 0xeb, 0x1f, 0xb5, 0xf7, - 0xad, 0x87, 0xcd, 0xee, 0xe6, 0xc6, 0xf3, 0xdf, 0x75, 0x37, 0x7f, 0xd4, 0xde, 0xb7, 0x1f, 0x36, - 0x36, 0x5e, 0xf8, 0x9f, 0xdf, 0x5f, 0x1a, 0x63, 0xf3, 0xe7, 0xc6, 0xc6, 0xc6, 0xf8, 0x3c, 0x3d, - 0x39, 0x63, 0x5f, 0x6b, 0xf5, 0xeb, 0xdf, 0x93, 0x8f, 0xa3, 0xbf, 0xd3, 0x53, 0x3a, 0xd7, 0x97, - 0x37, 0x5f, 0x3c, 0x9b, 0xef, 0x4b, 0x13, 0x41, 0xff, 0xdb, 0xbd, 0xfe, 0x4f, 0x77, 0xf3, 0x47, - 0xe7, 0x61, 0xf2, 0x39, 0xf9, 0x7b, 0xf3, 0xe7, 0xc6, 0xd6, 0x6f, 0x57, 0x57, 0x5b, 0x5b, 0xbf, - 0x6d, 0x8e, 0x5e, 0x7c, 0xfc, 0xbd, 0xdf, 0x46, 0xff, 0xfb, 0x7b, 0xb7, 0x3b, 0xf3, 0xab, 0xcd, - 0x8d, 0x7f, 0x6d, 0xad, 0x82, 0x58, 0x81, 0x66, 0x04, 0x1b, 0x82, 0x7b, 0x27, 0x4c, 0xaa, 0x3d, - 0xa5, 0x0c, 0x77, 0xc8, 0x3c, 0x65, 0xfc, 0xd0, 0x4b, 0xea, 0x63, 0x19, 0xe6, 0x6d, 0x2a, 0xa7, - 0xe4, 0x6e, 0xea, 0x4e, 0xf5, 0x9d, 0x56, 0xab, 0xb3, 0xdd, 0x6a, 0xd5, 0xb6, 0x9b, 0xdb, 0xb5, - 0xdd, 0x76, 0xbb, 0xde, 0xa9, 0x9b, 0x24, 0x9d, 0xcf, 0x84, 0x43, 0x05, 0x75, 0x3e, 0xde, 0x57, - 0xba, 0x16, 0x8f, 0x3c, 0x0f, 0xe9, 0x90, 0xaa, 0xc7, 0xf8, 0xf7, 0xaa, 0x17, 0xd8, 0x65, 0x14, - 0x62, 0x7b, 0xe1, 0x9e, 0x48, 0x8a, 0x20, 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, 0x8a, 0x20, - 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, 0x8a, 0x20, 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, - 0x8a, 0xac, 0x04, 0x29, 0x02, 0xca, 0x14, 0x4e, 0xba, 0x57, 0x89, 0x2a, 0x73, 0xca, 0xb3, 0x84, - 0x1f, 0x6f, 0x89, 0x86, 0x30, 0x1a, 0xc2, 0x68, 0x08, 0xa3, 0x21, 0x0c, 0xc6, 0x10, 0xc6, 0x20, - 0xe4, 0x25, 0x42, 0xeb, 0x18, 0x84, 0x6c, 0x64, 0xab, 0x63, 0x10, 0xb2, 0xa6, 0xad, 0x82, 0xc5, - 0xf0, 0x20, 0x19, 0x03, 0x68, 0x6a, 0x58, 0xcb, 0xdf, 0x04, 0x38, 0x1a, 0xc4, 0x00, 0x88, 0x3a, - 0x46, 0xd4, 0x97, 0x61, 0xf3, 0x67, 0xae, 0x36, 0xe4, 0x37, 0x1e, 0xe1, 0xdd, 0xe9, 0x8e, 0xc2, - 0x09, 0xd0, 0xeb, 0x26, 0x7d, 0x85, 0x47, 0x1f, 0x1f, 0xbb, 0x0b, 0x3f, 0xf9, 0x79, 0xa6, 0xc7, - 0xb0, 0x89, 0x7e, 0xb3, 0xe9, 0x3b, 0x1d, 0x50, 0x69, 0x0b, 0x16, 0x8e, 0xdb, 0x31, 0x57, 0xf6, - 0x1c, 0x87, 0xc5, 0x9f, 0x89, 0x67, 0x7d, 0x39, 0x3f, 0xef, 0x59, 0x0e, 0x51, 0xc4, 0x72, 0x03, - 0x61, 0x1d, 0xf7, 0x6e, 0x3a, 0xd6, 0xe3, 0x1b, 0x1b, 0x36, 0xf8, 0xea, 0x68, 0xf0, 0xa1, 0xc1, - 0x87, 0x06, 0xdf, 0xea, 0x1b, 0x7c, 0xa6, 0xda, 0xea, 0xce, 0xb0, 0x63, 0x25, 0x04, 0x8a, 0xbc, - 0x4a, 0x93, 0x19, 0x0f, 0x18, 0x79, 0x4d, 0x9a, 0x1f, 0x05, 0x62, 0x24, 0xc6, 0x03, 0xfe, 0x5c, - 0x80, 0xbf, 0xb7, 0x24, 0x55, 0xd2, 0x52, 0x43, 0x6a, 0x8d, 0x1f, 0xd3, 0x8a, 0x1f, 0xd3, 0x4a, - 0x1e, 0xf3, 0x8a, 0x97, 0xe3, 0x32, 0x31, 0xcc, 0xef, 0x95, 0x26, 0xf6, 0xcb, 0x14, 0xff, 0xa5, - 0xab, 0x81, 0xb2, 0xd5, 0xc1, 0xc2, 0xd4, 0xc2, 0xc2, 0xd4, 0xc3, 0x22, 0xd4, 0x44, 0x49, 0x66, - 0x98, 0xe1, 0xf3, 0x66, 0x9c, 0x2f, 0x9c, 0x39, 0x6d, 0xa5, 0x04, 0xd0, 0xcc, 0xc0, 0xe1, 0xdd, - 0x12, 0xee, 0x55, 0x4a, 0x40, 0x8d, 0x59, 0x0b, 0xed, 0x8d, 0x95, 0x2b, 0x35, 0xc0, 0x66, 0x66, - 0x0d, 0x77, 0x4a, 0xbc, 0x67, 0xd9, 0xa1, 0x01, 0xe9, 0x8d, 0x57, 0x3e, 0xf0, 0xc6, 0x2c, 0x0d, - 0x54, 0xb2, 0xfc, 0x5c, 0xec, 0x69, 0xec, 0xe0, 0x69, 0x34, 0x7e, 0x1a, 0x31, 0x60, 0x27, 0x8f, - 0x08, 0x83, 0x17, 0xb8, 0x53, 0xb2, 0x58, 0xc2, 0x40, 0xa4, 0x72, 0xd9, 0x97, 0x25, 0xf7, 0x0e, - 0x5c, 0xeb, 0xf6, 0x0e, 0x70, 0x1e, 0x28, 0x32, 0x66, 0x31, 0xf4, 0x2b, 0xa7, 0x8a, 0xb4, 0x87, - 0xd4, 0x27, 0x21, 0x51, 0xc3, 0x11, 0x9d, 0x1f, 0x52, 0x6e, 0x27, 0x14, 0x41, 0x75, 0x8a, 0xd3, - 0x7f, 0xe9, 0xe3, 0x87, 0x69, 0x42, 0x3f, 0xa1, 0xf2, 0x1f, 0x49, 0xfc, 0x5f, 0xd3, 0xf7, 0xef, - 0x96, 0x73, 0xf5, 0x34, 0x02, 0x8c, 0x12, 0x02, 0xd1, 0x4a, 0x0b, 0x40, 0x33, 0x44, 0x4c, 0x19, - 0x23, 0xa2, 0x4c, 0x12, 0x4f, 0xc6, 0x89, 0x26, 0xd3, 0xc4, 0x52, 0x69, 0x44, 0x52, 0x69, 0xc4, - 0x51, 0x19, 0x44, 0xd1, 0x72, 0xfb, 0x8f, 0x8d, 0x11, 0x3f, 0xe9, 0x6e, 0xf7, 0x28, 0x71, 0x05, - 0x75, 0x4d, 0xec, 0xf7, 0x89, 0x0d, 0xb2, 0x6d, 0x60, 0xec, 0xde, 0x58, 0xa9, 0x6d, 0x6d, 0x7d, - 0x18, 0xa9, 0xb4, 0x0f, 0xb3, 0xb2, 0x72, 0x59, 0x75, 0xd1, 0xbb, 0x25, 0xda, 0x69, 0xb1, 0xd0, - 0x30, 0xa9, 0x69, 0xcc, 0x64, 0xc6, 0x9b, 0xcb, 0x84, 0x2f, 0x35, 0xf3, 0xdd, 0x4c, 0xa6, 0xbb, - 0xae, 0x9d, 0x61, 0x08, 0x9d, 0x96, 0x8a, 0x4a, 0x35, 0x8a, 0xb5, 0x8a, 0x54, 0x22, 0xb2, 0x15, - 0x1f, 0xcb, 0xcd, 0xe3, 0xc9, 0x53, 0x7d, 0x3b, 0x4f, 0x9e, 0xea, 0x8b, 0x47, 0xf8, 0xb7, 0xe3, - 0xf0, 0xa6, 0xf3, 0x6d, 0x6f, 0xf4, 0x28, 0xdf, 0xbe, 0x08, 0x11, 0x7e, 0x4a, 0x1e, 0xe2, 0xdd, - 0x72, 0x88, 0x8d, 0x62, 0x23, 0x14, 0xdc, 0x56, 0x15, 0x7a, 0xa7, 0x04, 0xa9, 0x46, 0x5c, 0x2a, - 0xd2, 0xf7, 0xf4, 0x28, 0xb5, 0x8a, 0xa0, 0x2e, 0x15, 0x94, 0xdb, 0xfa, 0x08, 0x7d, 0x8d, 0xfb, - 0x7c, 0xa2, 0x61, 0xcf, 0x8f, 0xf6, 0xad, 0xf6, 0xf6, 0xee, 0x8e, 0x55, 0xb5, 0xbe, 0x8c, 0x5d, - 0xd0, 0xc9, 0x96, 0x11, 0xd6, 0x39, 0x75, 0x22, 0xee, 0x10, 0x6e, 0xdf, 0x5b, 0x3d, 0x11, 0xa8, - 0xc0, 0x0e, 0xbc, 0x2b, 0xbe, 0xf1, 0xe5, 0xfc, 0xbc, 0xb7, 0x69, 0x7d, 0xa1, 0x42, 0xb2, 0x80, - 0x5b, 0xcd, 0x49, 0x58, 0x52, 0xcb, 0x22, 0xdc, 0x49, 0xdc, 0xdb, 0x3a, 0x37, 0xb5, 0x21, 0x4c, - 0x3a, 0x8d, 0x45, 0x1f, 0x17, 0x49, 0x33, 0x38, 0x32, 0x0d, 0x43, 0x9f, 0xc0, 0x4f, 0xfd, 0xab, - 0xb8, 0x6c, 0x80, 0xe2, 0xdd, 0x62, 0xc9, 0xac, 0xa2, 0xf2, 0x45, 0xb3, 0xba, 0x32, 0xaf, 0xa6, - 0x8a, 0x6d, 0x80, 0xfc, 0xcb, 0x95, 0xef, 0xca, 0x9c, 0xcb, 0x33, 0xc1, 0x97, 0xb9, 0x2d, 0x6a, - 0x3d, 0x00, 0x52, 0x1f, 0x60, 0x34, 0x0a, 0x10, 0xf5, 0x00, 0xc2, 0xbc, 0x4b, 0xa5, 0x27, 0x58, - 0xb9, 0xd8, 0xd1, 0x2b, 0x29, 0xf8, 0xb8, 0xa0, 0x2a, 0xfa, 0x45, 0x38, 0xf1, 0x71, 0xcf, 0x8a, - 0xef, 0x61, 0xb9, 0xc4, 0x67, 0xde, 0xbd, 0x35, 0x12, 0x19, 0x91, 0x48, 0x04, 0x53, 0xac, 0x04, - 0xae, 0xb8, 0xb6, 0xe8, 0x62, 0x4d, 0x51, 0xc4, 0xda, 0xd8, 0x3a, 0x9d, 0xec, 0x9c, 0x76, 0x36, - 0x4e, 0x37, 0xd2, 0x31, 0xc6, 0xb6, 0x19, 0x83, 0x35, 0x26, 0xd8, 0xb4, 0xc5, 0x9a, 0x14, 0xba, - 0xa2, 0x6a, 0x2b, 0x89, 0x3a, 0xd6, 0xb6, 0x33, 0x52, 0xf6, 0x3e, 0x1e, 0x55, 0xd3, 0xda, 0x3d, - 0x13, 0x38, 0x87, 0xdc, 0xf6, 0x02, 0xc9, 0xf8, 0x20, 0x16, 0x30, 0x8a, 0x30, 0x4e, 0x45, 0x82, - 0x30, 0x93, 0x28, 0xd8, 0xc4, 0xf2, 0x95, 0xd6, 0x90, 0x70, 0xc7, 0xa3, 0x8e, 0xd5, 0xbf, 0xb7, - 0xd4, 0x90, 0xc9, 0x2b, 0x7e, 0xdc, 0x7b, 0x0c, 0x8c, 0xd5, 0xf5, 0x5c, 0x7a, 0x13, 0x19, 0xb4, - 0x3b, 0x0e, 0x4c, 0x38, 0x0c, 0x8c, 0x39, 0x0a, 0xca, 0x30, 0xc6, 0x8c, 0x38, 0x06, 0xca, 0xb5, - 0xc4, 0x34, 0x3b, 0x02, 0x96, 0x8b, 0x8e, 0x35, 0xc0, 0x92, 0x18, 0x64, 0x4b, 0xf4, 0xb3, 0x26, - 0xa0, 0xd8, 0x13, 0xd3, 0x07, 0xb7, 0x4c, 0x36, 0xa5, 0xb4, 0xb3, 0x0c, 0x8d, 0x5d, 0xd1, 0x2b, - 0x27, 0xf4, 0x8f, 0x76, 0xbd, 0x1a, 0xec, 0x72, 0xc9, 0x74, 0xc6, 0x75, 0x5e, 0x1b, 0x59, 0x0f, - 0xcb, 0x64, 0x94, 0x5d, 0x2a, 0x20, 0x19, 0xb2, 0x3a, 0x39, 0xf2, 0x1d, 0xb3, 0xec, 0x4b, 0x96, - 0xed, 0x8a, 0x8c, 0xca, 0xb8, 0xe8, 0xa2, 0x1a, 0x59, 0xcc, 0x6c, 0x33, 0x3b, 0xff, 0xfc, 0x64, - 0x98, 0x9b, 0x8a, 0x3d, 0x41, 0xe3, 0xd9, 0xe6, 0x24, 0xd5, 0xdd, 0xe3, 0xeb, 0x33, 0xae, 0x46, - 0x3e, 0x93, 0x22, 0xb7, 0xe9, 0x50, 0xc4, 0x44, 0x28, 0x6c, 0x0a, 0x14, 0x45, 0x0e, 0xda, 0xa0, - 0xbd, 0x36, 0xb5, 0xaf, 0x03, 0xaa, 0x9b, 0x3d, 0xed, 0x79, 0x59, 0x83, 0x8a, 0x13, 0x8d, 0x92, - 0xa2, 0xaa, 0x0e, 0x55, 0xd4, 0x56, 0x55, 0x25, 0x08, 0x97, 0xfe, 0xa8, 0x7e, 0x49, 0xce, 0xe5, - 0x9b, 0xec, 0x9f, 0xd7, 0x87, 0xce, 0xb9, 0x0a, 0x3a, 0x9a, 0x7d, 0x57, 0xea, 0x95, 0x52, 0x75, - 0x6b, 0xb1, 0x60, 0xc4, 0xc2, 0xdc, 0x81, 0x0e, 0xae, 0x40, 0x1b, 0x37, 0xa0, 0xcb, 0xa4, 0xd0, - 0x6e, 0xfb, 0x6b, 0xb7, 0x0f, 0x74, 0xda, 0xf6, 0xe5, 0xba, 0xb6, 0x0a, 0x07, 0xe7, 0x3d, 0xa9, - 0xd2, 0xd6, 0x6c, 0x14, 0xd9, 0x2e, 0xe3, 0xb3, 0x53, 0x20, 0xd4, 0x4e, 0x53, 0x99, 0x35, 0x0d, - 0x6c, 0xac, 0xce, 0x32, 0x69, 0x69, 0x6d, 0x2b, 0x5d, 0x84, 0xa2, 0xa9, 0xca, 0x55, 0xfa, 0x2b, - 0x53, 0x69, 0xa0, 0xa4, 0xb4, 0x96, 0x21, 0x4b, 0x97, 0xa2, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, - 0x1b, 0xbb, 0xed, 0xf5, 0x5b, 0x93, 0x05, 0x19, 0xc9, 0xd7, 0xa5, 0x0a, 0x46, 0x8d, 0x24, 0xa6, - 0x46, 0xd2, 0x52, 0xa3, 0x53, 0xf2, 0xfc, 0x68, 0xdf, 0x6a, 0xed, 0x74, 0x1a, 0xdd, 0x51, 0xb9, - 0x91, 0x0b, 0x45, 0x14, 0xf5, 0xa8, 0x94, 0xd6, 0xd8, 0x2c, 0xb6, 0xf6, 0x22, 0x15, 0x3c, 0x71, - 0xfd, 0x2e, 0xb9, 0x07, 0x53, 0x37, 0xab, 0x58, 0x8e, 0x13, 0x33, 0xc7, 0x32, 0xe0, 0x09, 0x2e, - 0x95, 0xe6, 0xba, 0x1f, 0x04, 0xaa, 0x1a, 0xd8, 0x55, 0x3b, 0xf0, 0xc3, 0x84, 0xd7, 0x70, 0xaa, - 0x1e, 0x25, 0x6e, 0x3c, 0xe8, 0x43, 0x59, 0xd4, 0x51, 0x0e, 0xab, 0x9c, 0xf2, 0x58, 0x70, 0x39, - 0xc5, 0xed, 0xba, 0xc9, 0x40, 0x8b, 0xb4, 0xe2, 0xe2, 0xc3, 0x87, 0x86, 0x1c, 0x1a, 0x72, 0x68, - 0xc8, 0x99, 0x37, 0xe4, 0xfa, 0x41, 0xe0, 0x51, 0xc2, 0x35, 0x58, 0x72, 0xf5, 0x3a, 0x0a, 0xfc, - 0xf2, 0x04, 0xbe, 0xaf, 0xa2, 0xe2, 0xc2, 0x3e, 0x1e, 0x04, 0x25, 0x26, 0x4a, 0x4c, 0x94, 0x98, - 0x48, 0x7d, 0x2d, 0x13, 0xf5, 0x55, 0x6f, 0xec, 0x20, 0xfb, 0x85, 0xec, 0x17, 0xb2, 0x5f, 0xc8, - 0x7e, 0x69, 0x63, 0xbf, 0x1a, 0xad, 0x4e, 0xad, 0x6b, 0x25, 0xf1, 0x21, 0x9c, 0xaa, 0x34, 0x34, - 0xeb, 0x7d, 0x1a, 0x93, 0xd5, 0xb1, 0x36, 0x8e, 0x7b, 0x37, 0x9d, 0x4d, 0xeb, 0x22, 0xa4, 0x36, - 0x73, 0x99, 0x9d, 0x80, 0xcb, 0x2b, 0x9e, 0x0e, 0x77, 0x41, 0x93, 0x5d, 0x6b, 0xb5, 0x91, 0x1a, - 0x33, 0x44, 0x8d, 0xe9, 0x5c, 0x23, 0x3c, 0xfb, 0x6b, 0x67, 0x46, 0xad, 0x4b, 0xc8, 0xd5, 0x38, - 0x4a, 0x69, 0x09, 0xe2, 0xad, 0x38, 0x65, 0x83, 0x61, 0x3f, 0x10, 0x32, 0x7f, 0xc8, 0xd5, 0xe3, - 0x10, 0x18, 0x75, 0x65, 0x4c, 0x5d, 0x60, 0xd4, 0x55, 0x89, 0x51, 0x57, 0x93, 0x1d, 0x5d, 0x9c, - 0x9f, 0x49, 0x47, 0x2a, 0x46, 0xd2, 0xd4, 0x91, 0xa4, 0x41, 0x92, 0x06, 0x02, 0x49, 0x53, 0x34, - 0x3d, 0x32, 0x6f, 0xfc, 0xef, 0xab, 0x9b, 0x2e, 0x57, 0x3c, 0xb0, 0xe6, 0x63, 0xa8, 0xed, 0x38, - 0xea, 0x3c, 0x96, 0xda, 0x8f, 0x67, 0x19, 0x86, 0x11, 0x66, 0x3d, 0x2f, 0x84, 0x99, 0xd2, 0x97, - 0xf5, 0xcc, 0x0c, 0xe4, 0x3c, 0x6b, 0x4b, 0x88, 0xd5, 0x5c, 0x9a, 0x14, 0x33, 0x8b, 0x31, 0xb3, - 0xb8, 0x2c, 0xf1, 0xa0, 0x47, 0x4c, 0x68, 0x12, 0x17, 0xe9, 0x8b, 0x6a, 0x2f, 0x25, 0xfa, 0x62, - 0x8f, 0x83, 0x2a, 0x0f, 0xaa, 0xff, 0x17, 0x70, 0x9d, 0xd9, 0xa9, 0x26, 0x7a, 0x19, 0x18, 0xeb, - 0x55, 0x80, 0xbd, 0x08, 0x5e, 0x9e, 0x14, 0xfd, 0xbd, 0x06, 0x34, 0x3f, 0xe2, 0xe3, 0x7c, 0x77, - 0xaf, 0xae, 0xb6, 0xae, 0x7f, 0xab, 0x2c, 0x5b, 0x82, 0xee, 0x92, 0x57, 0xf5, 0xd4, 0xce, 0x58, - 0xea, 0x97, 0xa6, 0x3a, 0x5c, 0x82, 0xa3, 0x1e, 0x87, 0xe4, 0x9e, 0x8a, 0xb4, 0xab, 0x8b, 0x76, - 0x0c, 0xf5, 0xc2, 0x3d, 0x10, 0x53, 0x21, 0xa6, 0x42, 0x4c, 0xb5, 0x74, 0x98, 0xea, 0x94, 0x70, - 0x87, 0xa8, 0x40, 0xdc, 0x6b, 0x2c, 0x81, 0x64, 0x0e, 0xa7, 0x85, 0xc3, 0x7b, 0x69, 0xa0, 0x17, - 0x15, 0x30, 0x7c, 0x36, 0x0d, 0xac, 0x1a, 0x0f, 0x1b, 0xdd, 0xa7, 0x3f, 0x6f, 0xfe, 0xa6, 0xb3, - 0x8d, 0x11, 0xaa, 0x7e, 0x2c, 0x7d, 0xbd, 0xdc, 0xa5, 0x69, 0x53, 0x7f, 0x61, 0xfa, 0x29, 0x97, - 0x3f, 0x54, 0xdf, 0x7c, 0x17, 0x98, 0x6b, 0x1d, 0x84, 0x96, 0x3e, 0x22, 0x4b, 0x13, 0xd8, 0x42, - 0x9e, 0x7a, 0xa9, 0x40, 0x14, 0xf2, 0xd4, 0xe5, 0x03, 0x19, 0x03, 0xbd, 0x6a, 0x74, 0xf6, 0xa6, - 0x99, 0xee, 0x45, 0x33, 0x2a, 0x32, 0x3c, 0xee, 0x48, 0x33, 0x29, 0x46, 0x0c, 0x51, 0x94, 0x8e, - 0xba, 0xb9, 0x69, 0x93, 0xa6, 0xa3, 0xe1, 0x96, 0xcc, 0xf1, 0xd7, 0x40, 0x81, 0x8a, 0x02, 0x15, - 0x90, 0x40, 0x45, 0xc7, 0x1f, 0x92, 0x54, 0x48, 0x52, 0x21, 0x49, 0xb5, 0x34, 0x84, 0x12, 0x3a, - 0xfe, 0xa6, 0x89, 0x25, 0x74, 0xfc, 0xbd, 0x34, 0x29, 0xe8, 0xf8, 0x5b, 0x3c, 0xf9, 0xa5, 0x01, - 0x4e, 0x32, 0x39, 0x6e, 0x0d, 0x69, 0x00, 0x39, 0xa4, 0x43, 0x23, 0x80, 0x40, 0x00, 0x81, 0x00, - 0x62, 0x8d, 0x00, 0x04, 0xf5, 0x43, 0x75, 0x6f, 0x02, 0x31, 0x34, 0x31, 0xe4, 0x20, 0x1b, 0xb3, - 0x86, 0x21, 0x07, 0x28, 0x8c, 0x51, 0x18, 0x03, 0x10, 0xc6, 0x18, 0x72, 0x80, 0x21, 0x07, 0xeb, - 0x62, 0x74, 0x4c, 0x5c, 0xd2, 0x55, 0x3d, 0xde, 0x88, 0x99, 0xdd, 0xf9, 0x6c, 0x7c, 0xd4, 0x78, - 0xa8, 0xf1, 0x50, 0xe3, 0xad, 0x93, 0xf9, 0xc1, 0x23, 0x9f, 0x6a, 0xab, 0xcf, 0x3b, 0xa3, 0x9c, - 0x5a, 0x1a, 0xc7, 0x3c, 0xe4, 0x91, 0xaf, 0x31, 0xa0, 0x0a, 0xbb, 0xd5, 0x69, 0xfd, 0xf3, 0xbc, - 0x30, 0x74, 0xbd, 0x6b, 0x7d, 0x1e, 0xeb, 0x16, 0xeb, 0x80, 0x49, 0x3b, 0xb8, 0xa1, 0xe2, 0x7e, - 0xdc, 0xa4, 0xcc, 0xba, 0x79, 0x56, 0x7d, 0x65, 0x54, 0x6f, 0x65, 0x52, 0x6a, 0x65, 0x7b, 0xab, - 0xb9, 0xd5, 0xc0, 0x1e, 0x75, 0x8b, 0x15, 0xae, 0x2f, 0x0a, 0x59, 0x5d, 0x6b, 0x8b, 0x9d, 0xe9, - 0x00, 0x42, 0xd1, 0x40, 0xb0, 0x81, 0xce, 0xda, 0x7c, 0x29, 0x60, 0x1a, 0x8d, 0x8b, 0xd0, 0x13, - 0xa1, 0x27, 0x42, 0xcf, 0x35, 0x82, 0x9e, 0xa9, 0xe9, 0xa9, 0x55, 0x00, 0x40, 0x81, 0x9f, 0x18, - 0xcf, 0xff, 0x64, 0x3c, 0xb3, 0xf1, 0xfc, 0x23, 0x72, 0x03, 0x54, 0x77, 0xd6, 0xbc, 0x15, 0x6f, - 0xfe, 0x4b, 0xef, 0x0b, 0xc5, 0xa2, 0x55, 0x4e, 0x98, 0x54, 0x7b, 0x4a, 0x15, 0xac, 0x9b, 0x73, - 0xca, 0xf8, 0xa1, 0x47, 0x63, 0x09, 0x59, 0xb0, 0x1c, 0x6b, 0xe5, 0x94, 0xdc, 0x4d, 0x8d, 0x54, - 0xdf, 0x69, 0xb5, 0x3a, 0xdb, 0xad, 0x56, 0x6d, 0xbb, 0xb9, 0x5d, 0xdb, 0x6d, 0xb7, 0xeb, 0x9d, - 0x7a, 0x81, 0x22, 0xb2, 0x95, 0x33, 0xe1, 0x50, 0x41, 0x9d, 0x8f, 0xf1, 0x9c, 0xf1, 0xc8, 0xf3, - 0x40, 0x56, 0x4a, 0x34, 0x7a, 0x76, 0xca, 0xe8, 0xa4, 0x3b, 0x31, 0x26, 0xb0, 0x95, 0xae, 0xa9, - 0xe5, 0x5c, 0x86, 0xd2, 0x8e, 0xf9, 0x18, 0xec, 0x42, 0xf1, 0xf3, 0x85, 0x4b, 0x3a, 0x36, 0xb0, - 0xa4, 0xe3, 0x02, 0xd1, 0x37, 0x36, 0xd2, 0xcd, 0xb3, 0x7f, 0xb0, 0x91, 0x2e, 0x76, 0x13, 0x31, - 0x62, 0xc6, 0x63, 0xa1, 0x4a, 0x73, 0x58, 0x10, 0xbb, 0x89, 0xbc, 0xf0, 0x07, 0x1b, 0xe9, 0xe6, - 0xdd, 0x0b, 0xd8, 0x4a, 0x64, 0x0d, 0xd6, 0x04, 0x5b, 0x89, 0x64, 0x1c, 0x0b, 0x1b, 0xe9, 0xea, - 0x86, 0x04, 0x2f, 0x41, 0x03, 0x6c, 0xa4, 0xbb, 0xa2, 0x27, 0x18, 0xfb, 0xce, 0x66, 0x1d, 0x04, - 0xfb, 0xce, 0xa2, 0xdd, 0x83, 0x76, 0x4f, 0x39, 0x76, 0xcf, 0xe2, 0xfb, 0xce, 0x62, 0x9b, 0x56, - 0x14, 0x30, 0x28, 0x60, 0x90, 0x58, 0x41, 0x62, 0x25, 0xaf, 0x35, 0x8f, 0x6d, 0x5a, 0x91, 0x5b, - 0x41, 0x6e, 0x05, 0xb9, 0x15, 0x9d, 0xdc, 0x0a, 0xb6, 0x69, 0x5d, 0x7e, 0xe2, 0x05, 0xdb, 0xb4, - 0x96, 0xc9, 0xca, 0xac, 0x4b, 0xf4, 0x4b, 0x8e, 0xa8, 0x3f, 0x33, 0x91, 0x2f, 0x11, 0xe7, 0x91, - 0xdf, 0xa7, 0x22, 0x07, 0xad, 0xf5, 0x88, 0x3e, 0x1f, 0xc7, 0x58, 0x93, 0xb6, 0xa6, 0x2e, 0xc6, - 0xc0, 0xbc, 0x64, 0x79, 0xb9, 0x2b, 0x13, 0x03, 0x53, 0xb0, 0xb7, 0xa2, 0x9e, 0x9e, 0x8a, 0x2b, - 0xd7, 0xd2, 0xd4, 0x45, 0x42, 0xa3, 0xa4, 0x63, 0xb5, 0x18, 0x42, 0xa3, 0x70, 0x4b, 0xd3, 0xa2, - 0x1e, 0x96, 0x99, 0x5d, 0x57, 0xcc, 0xd3, 0xf2, 0xf8, 0x62, 0x1a, 0x3c, 0x2e, 0xe9, 0x60, 0x89, - 0x19, 0x58, 0x0c, 0x0b, 0x5e, 0x63, 0xf1, 0x7b, 0xe3, 0x02, 0xa7, 0x0c, 0xb3, 0x08, 0x68, 0xad, - 0x66, 0x17, 0x8b, 0xdf, 0x3f, 0xdf, 0x6d, 0xc5, 0x5d, 0x3c, 0x33, 0x5a, 0xbf, 0xbe, 0x52, 0x59, - 0x54, 0xc6, 0xda, 0xd0, 0x40, 0xc9, 0x7e, 0x5a, 0xc2, 0x94, 0x9a, 0x47, 0xc3, 0xad, 0x50, 0x5b, - 0x99, 0x72, 0xbc, 0x8b, 0xe9, 0x7b, 0x54, 0x05, 0x75, 0x8b, 0x23, 0xf3, 0xa7, 0xc3, 0x21, 0x40, - 0x47, 0x80, 0x8e, 0x00, 0xdd, 0xb8, 0x5d, 0xac, 0xd7, 0x3e, 0xd6, 0x74, 0x0c, 0x11, 0xce, 0x22, - 0x9c, 0x85, 0x0d, 0x67, 0xf5, 0xb5, 0x1e, 0x99, 0x28, 0x45, 0x03, 0x75, 0xc4, 0xd3, 0xa1, 0xb1, - 0x9a, 0xca, 0xd2, 0x08, 0x03, 0x53, 0x42, 0xc1, 0xb8, 0x70, 0x30, 0x2e, 0x24, 0x4c, 0x0a, 0x0b, - 0x3d, 0x42, 0x43, 0x93, 0xf0, 0xd0, 0x6f, 0x13, 0xcf, 0xec, 0x56, 0x7d, 0x8d, 0xe1, 0x66, 0x34, - 0xfe, 0xb6, 0xde, 0x0a, 0xb3, 0x63, 0x93, 0x2a, 0x5e, 0xe6, 0xee, 0x94, 0x09, 0xf5, 0xec, 0x17, - 0xe3, 0x9f, 0x93, 0xe2, 0x01, 0xd8, 0x42, 0x76, 0x39, 0x4e, 0x82, 0x8e, 0x48, 0x25, 0x19, 0xf5, - 0x0d, 0x2a, 0xc0, 0x27, 0xa3, 0xa3, 0x0e, 0x44, 0x1d, 0x88, 0x3a, 0x10, 0x75, 0x20, 0x58, 0x1d, - 0xf8, 0xf5, 0x51, 0x07, 0xfe, 0x8f, 0x1d, 0x09, 0x41, 0xb9, 0xda, 0xd8, 0xfc, 0xb0, 0xb5, 0xf5, - 0x48, 0x37, 0x5e, 0x8f, 0x2f, 0x99, 0x96, 0x7b, 0xf2, 0x85, 0xdf, 0xa5, 0x23, 0x3b, 0xf4, 0x0e, - 0xd5, 0x29, 0x56, 0x70, 0x5b, 0xee, 0x0a, 0x6e, 0x53, 0x94, 0xf9, 0x13, 0x06, 0x19, 0x70, 0x5f, - 0x76, 0x6c, 0x26, 0x8c, 0x8c, 0x1e, 0x32, 0x7a, 0xc8, 0xe8, 0x21, 0xa3, 0x87, 0xd6, 0x0c, 0x5a, - 0x33, 0x68, 0xcd, 0x20, 0xa3, 0x87, 0x84, 0x16, 0x12, 0x5a, 0xa8, 0x02, 0x50, 0x05, 0xa0, 0x0a, - 0x40, 0x42, 0x6b, 0x29, 0x08, 0x2d, 0xe4, 0x73, 0x4a, 0xe7, 0x73, 0xd6, 0xa8, 0x2e, 0xff, 0x72, - 0x47, 0xa6, 0xea, 0x08, 0xd4, 0xb4, 0xb2, 0x94, 0x7c, 0xff, 0x33, 0xbd, 0xf7, 0xb7, 0xf4, 0x4b, - 0xe7, 0xd4, 0x5d, 0xe6, 0xd8, 0xd8, 0x62, 0x14, 0x9e, 0x16, 0xea, 0x4e, 0x5b, 0x2c, 0x6c, 0x03, - 0x63, 0x61, 0xcd, 0x41, 0x2d, 0x8c, 0x85, 0xd5, 0x46, 0xb1, 0x61, 0xb2, 0xda, 0x9c, 0x7f, 0x30, - 0x59, 0xad, 0x3c, 0xdb, 0x0f, 0x7d, 0x01, 0x98, 0xac, 0xf6, 0xf6, 0x6e, 0x5b, 0xbe, 0x64, 0x35, - 0x44, 0xca, 0x1a, 0x90, 0x72, 0x01, 0x93, 0x05, 0x4b, 0xb5, 0xcc, 0x31, 0xc1, 0x95, 0x5c, 0xc8, - 0x3c, 0xab, 0xd1, 0x61, 0xac, 0x2a, 0xcc, 0x3b, 0x8d, 0x0b, 0x95, 0x77, 0x81, 0x34, 0x2e, 0x4c, - 0x25, 0x53, 0x7f, 0xa7, 0xb9, 0x56, 0x61, 0xbe, 0xa9, 0x7f, 0x7b, 0x22, 0xe7, 0x98, 0xc4, 0x8c, - 0x26, 0x5b, 0x2e, 0x13, 0x2d, 0xa3, 0x49, 0x96, 0xd9, 0x04, 0xcb, 0x83, 0x84, 0xa6, 0x11, 0x4f, - 0xbc, 0x94, 0x59, 0x56, 0x31, 0x27, 0xb6, 0x29, 0x8c, 0x61, 0x0a, 0x63, 0x95, 0xe7, 0x98, 0x24, - 0x79, 0xf1, 0x05, 0x1d, 0xdc, 0xac, 0x66, 0x4f, 0x25, 0x79, 0xd8, 0xdc, 0xb5, 0xa1, 0x32, 0xae, - 0x71, 0x01, 0xc0, 0xbf, 0xf0, 0xaa, 0x50, 0x39, 0x5e, 0xd5, 0x5a, 0x8b, 0xba, 0x50, 0xd9, 0xb6, - 0x7b, 0x39, 0x00, 0x23, 0x37, 0xa8, 0x9e, 0xaa, 0x7a, 0x96, 0xaf, 0xdf, 0x45, 0x2a, 0x95, 0x77, - 0x73, 0x5c, 0x3b, 0x7e, 0xec, 0x7c, 0x86, 0xbd, 0xa6, 0x42, 0xc3, 0xf5, 0x8e, 0x86, 0x42, 0xc3, - 0x1d, 0x2c, 0x34, 0xfc, 0x6c, 0x30, 0xec, 0xe0, 0x54, 0x68, 0x29, 0x4c, 0x54, 0x19, 0xee, 0xb4, - 0xdb, 0x4d, 0x2c, 0x30, 0x5c, 0xd6, 0xd5, 0xa5, 0x16, 0x18, 0xd6, 0x20, 0x0b, 0xa5, 0x12, 0x8c, - 0x0f, 0x74, 0x34, 0x75, 0xd8, 0x29, 0xc9, 0x66, 0xbf, 0x46, 0xd3, 0xf2, 0x4d, 0xd3, 0x32, 0x03, - 0x89, 0x32, 0x87, 0x21, 0xf8, 0xae, 0xc0, 0x84, 0x54, 0xf6, 0xa2, 0x41, 0x8c, 0xa2, 0x12, 0x17, - 0xc3, 0xdb, 0xba, 0x2e, 0xa3, 0x21, 0x39, 0x57, 0x4c, 0x5c, 0x3c, 0x23, 0xdd, 0xa9, 0xd9, 0x99, - 0xd7, 0xf0, 0x3c, 0xa0, 0xd2, 0x16, 0x2c, 0x1c, 0xaf, 0x61, 0xe5, 0xb8, 0x77, 0xd3, 0xb2, 0x88, - 0xe3, 0x08, 0xcb, 0x25, 0x3e, 0xf3, 0xee, 0xad, 0x27, 0xcd, 0xaa, 0x2c, 0x37, 0x10, 0x57, 0xfc, - 0xf1, 0x41, 0x4c, 0x5b, 0xb7, 0xb5, 0x72, 0xac, 0xdb, 0x4c, 0xed, 0x3b, 0x56, 0xc7, 0xb6, 0xcd, - 0xd2, 0x7e, 0x63, 0xc1, 0x96, 0x2d, 0x0b, 0x6f, 0x5a, 0xf9, 0x2d, 0xdb, 0xe4, 0xea, 0xac, 0xf5, - 0x68, 0x9f, 0x9e, 0x8b, 0x1e, 0x11, 0xc4, 0xa7, 0x8a, 0x0a, 0x19, 0x9f, 0x01, 0x4b, 0x0d, 0xa9, - 0x95, 0x1e, 0x15, 0x2a, 0xe5, 0xf8, 0xb4, 0x6c, 0xad, 0x4b, 0x55, 0x65, 0xec, 0x2c, 0x6e, 0x2d, - 0xa6, 0xb3, 0xb8, 0xee, 0x03, 0xab, 0x83, 0x20, 0x5d, 0x6e, 0x75, 0xd6, 0x41, 0x75, 0x86, 0xea, - 0x6c, 0xf9, 0xd4, 0x59, 0xa7, 0x90, 0x3a, 0xeb, 0x18, 0x51, 0x67, 0x1d, 0x54, 0x67, 0xa8, 0xce, - 0x56, 0x5c, 0x9d, 0xfd, 0xf2, 0x1b, 0xd7, 0x6f, 0x99, 0x79, 0xd9, 0xec, 0x5d, 0x3d, 0x76, 0x6e, - 0x65, 0x2e, 0x17, 0xe5, 0x5b, 0x5e, 0xd3, 0x5f, 0x2f, 0xe5, 0xeb, 0xd3, 0xf2, 0x0b, 0x19, 0x38, - 0xa7, 0x63, 0x34, 0x93, 0x43, 0x74, 0x4e, 0x11, 0x32, 0xb7, 0x03, 0x34, 0x8b, 0x88, 0xc8, 0x1c, - 0xe2, 0x95, 0x55, 0x04, 0xe4, 0x3e, 0xf2, 0xb9, 0x8f, 0x78, 0x9e, 0x10, 0xab, 0x62, 0x4c, 0xc8, - 0xbc, 0xba, 0xb0, 0x42, 0x1c, 0x9f, 0xf1, 0x6a, 0xbc, 0x27, 0x22, 0x99, 0xdd, 0xb9, 0xfe, 0xe4, - 0xea, 0x6c, 0xb0, 0xad, 0xb6, 0xac, 0xb0, 0xcd, 0x5d, 0x4f, 0xd8, 0xe6, 0x2e, 0x0a, 0xb6, 0x9d, - 0x12, 0xee, 0x10, 0x15, 0x88, 0xfb, 0x0c, 0x58, 0x3e, 0xb3, 0x33, 0x72, 0x2a, 0x64, 0x38, 0xf2, - 0x69, 0xe6, 0xd6, 0xfb, 0xa9, 0x3c, 0x6c, 0x65, 0xb8, 0xe6, 0x90, 0x47, 0xfe, 0xfc, 0x25, 0x6a, - 0xe6, 0x9d, 0xae, 0x02, 0x7d, 0xfe, 0x0a, 0xf4, 0xf5, 0x2b, 0x80, 0xec, 0x92, 0x9e, 0x70, 0x3b, - 0x9d, 0x66, 0xd7, 0xba, 0x8c, 0xf1, 0x6d, 0xaa, 0x66, 0xad, 0x4f, 0x22, 0x88, 0x42, 0xeb, 0xf4, - 0xf8, 0xa3, 0x55, 0xb5, 0x98, 0xbb, 0x17, 0x8b, 0x92, 0x8b, 0x2c, 0x92, 0xc4, 0x14, 0x0c, 0x2c, - 0xda, 0x7a, 0xcf, 0x0c, 0x12, 0xcc, 0x31, 0x8d, 0x4b, 0x03, 0x1b, 0xaf, 0x4b, 0x0c, 0x13, 0xb3, - 0x83, 0x28, 0x9e, 0x9b, 0x1c, 0xca, 0x2c, 0xbd, 0x72, 0x45, 0xf8, 0x07, 0x54, 0x64, 0xcb, 0xce, - 0x3f, 0xf0, 0x6a, 0x5f, 0x04, 0xc4, 0xb1, 0x89, 0x54, 0xd5, 0xf0, 0xbb, 0x92, 0x05, 0xc8, 0x88, - 0x99, 0xa1, 0xd6, 0x23, 0x84, 0x0c, 0x1b, 0x0b, 0x16, 0x3e, 0x04, 0x39, 0x85, 0x7f, 0xe9, 0xe1, - 0x63, 0x63, 0xf1, 0xdc, 0x69, 0x15, 0x08, 0x21, 0xdb, 0xc9, 0x71, 0x69, 0xb1, 0xe0, 0xa9, 0x02, - 0x61, 0x13, 0x3a, 0x82, 0xa5, 0x74, 0x05, 0x49, 0x69, 0x8f, 0xc6, 0xd1, 0x17, 0x85, 0x53, 0xa4, - 0x92, 0x9f, 0x8e, 0x20, 0xa8, 0xc7, 0x86, 0xf7, 0x3b, 0xad, 0x56, 0x67, 0xbb, 0xd5, 0xaa, 0x6d, - 0x37, 0xb7, 0x6b, 0xbb, 0xed, 0x76, 0xbd, 0x53, 0x6f, 0xaf, 0xee, 0xac, 0x2f, 0x67, 0x04, 0x4e, - 0x46, 0xa9, 0xa4, 0xa1, 0x69, 0xba, 0x86, 0x66, 0xe9, 0x1a, 0x42, 0xab, 0xe6, 0xb1, 0x0e, 0xa6, - 0x3a, 0x6c, 0x5b, 0xcc, 0xfd, 0x63, 0xff, 0x98, 0x7f, 0x9c, 0x40, 0x86, 0x5e, 0x76, 0xc4, 0xa0, - 0x53, 0xa1, 0x9a, 0xb0, 0xc2, 0xb4, 0xeb, 0xd8, 0xdc, 0x56, 0xd9, 0x5b, 0xf3, 0xbe, 0x6a, 0x67, - 0xd0, 0x48, 0xdb, 0x6d, 0xc6, 0xab, 0x0e, 0x93, 0x36, 0x11, 0x4e, 0x31, 0x94, 0x9c, 0x0e, 0x82, - 0xf8, 0x18, 0xf1, 0x31, 0xe2, 0x63, 0xc4, 0xc7, 0x88, 0x8f, 0x11, 0x1f, 0x23, 0x3e, 0x46, 0x7c, - 0x9c, 0xb0, 0xe7, 0xc7, 0xfc, 0x20, 0x1f, 0x3e, 0x40, 0x34, 0x9c, 0x6f, 0x96, 0x11, 0xfb, 0xce, - 0x87, 0x7d, 0xa9, 0x10, 0x81, 0x28, 0x86, 0x7c, 0xc7, 0x43, 0x20, 0xee, 0x45, 0xdc, 0x8b, 0xb8, - 0x17, 0x71, 0x2f, 0xe2, 0x5e, 0xc4, 0xbd, 0x88, 0x7b, 0x11, 0xf7, 0x8e, 0x11, 0xd9, 0x61, 0x1e, - 0x74, 0x80, 0xa8, 0x37, 0xcf, 0x1c, 0x23, 0xe6, 0x9d, 0x0f, 0xf3, 0xfa, 0x91, 0xa7, 0x98, 0x9e, - 0xd8, 0x88, 0x67, 0x43, 0x21, 0x06, 0x46, 0x0c, 0x8c, 0x18, 0x18, 0x31, 0x30, 0x62, 0x60, 0xc4, - 0xc0, 0x88, 0x81, 0x11, 0x03, 0xbf, 0xe4, 0xa3, 0x3f, 0x9d, 0x40, 0x06, 0x8c, 0x8d, 0x30, 0x88, - 0x8b, 0xdf, 0x9a, 0x77, 0xc4, 0xca, 0xf3, 0x61, 0xe5, 0xc0, 0x56, 0xb4, 0x20, 0x46, 0x1e, 0x0f, - 0x81, 0xd8, 0x18, 0xb1, 0x31, 0x62, 0x63, 0xc4, 0xc6, 0x88, 0x8d, 0x11, 0x1b, 0x23, 0x36, 0x46, - 0x6c, 0x9c, 0x70, 0x97, 0x31, 0x30, 0x3b, 0xcb, 0x83, 0x0f, 0x10, 0x09, 0xe7, 0x9b, 0x65, 0xc4, - 0xbd, 0xf3, 0xe1, 0xde, 0x88, 0x6b, 0x62, 0x88, 0x9f, 0x0c, 0x84, 0x18, 0x18, 0x31, 0x30, 0x62, - 0x60, 0xc4, 0xc0, 0x88, 0x81, 0x11, 0x03, 0x23, 0x06, 0x46, 0x0c, 0x9c, 0xa2, 0xb3, 0x3f, 0x91, - 0x10, 0x2e, 0x07, 0x06, 0xff, 0x89, 0x0c, 0x70, 0x66, 0x24, 0xfc, 0x9d, 0x07, 0xb7, 0xbc, 0x1a, - 0x8a, 0x40, 0x05, 0x45, 0xb1, 0xf0, 0x93, 0xa1, 0x10, 0x0d, 0x23, 0x1a, 0x5e, 0x45, 0x34, 0xdc, - 0x6c, 0x14, 0x40, 0xc3, 0xdb, 0x88, 0x86, 0x11, 0x0d, 0x9b, 0x42, 0xc3, 0xad, 0xc6, 0x6e, 0x6b, - 0xb7, 0xb3, 0xdd, 0xd8, 0x45, 0x0c, 0x8c, 0x18, 0x78, 0x99, 0x30, 0xf0, 0x31, 0xff, 0x73, 0x84, - 0x0d, 0x7a, 0x79, 0xa0, 0x01, 0xa2, 0xe0, 0x02, 0x53, 0x8d, 0x38, 0x78, 0x8e, 0x79, 0xf6, 0x88, - 0x54, 0x55, 0xdb, 0xa3, 0x44, 0xe4, 0x07, 0xc0, 0x53, 0x63, 0x20, 0xf2, 0x45, 0xe4, 0xbb, 0x52, - 0xc8, 0xd7, 0x21, 0x8a, 0x56, 0x09, 0x77, 0xaa, 0x8a, 0xf9, 0xb4, 0x48, 0x2b, 0xce, 0x3c, 0x64, - 0x70, 0x8f, 0x28, 0x45, 0x05, 0xcf, 0xad, 0xe6, 0x2a, 0x57, 0x57, 0xce, 0x8f, 0xd6, 0x43, 0x35, - 0xfe, 0xa7, 0x31, 0xf9, 0xe7, 0x72, 0xf4, 0x4f, 0xf7, 0xc9, 0x3f, 0x1b, 0x57, 0x57, 0x5b, 0x57, - 0x57, 0xce, 0x7f, 0x36, 0x7f, 0xdf, 0xf8, 0xff, 0xfd, 0xfc, 0x7a, 0x75, 0xf5, 0x9f, 0xab, 0xab, - 0xea, 0xf5, 0x93, 0x6f, 0x6c, 0x56, 0x40, 0xca, 0xb7, 0x20, 0x52, 0xda, 0x4a, 0x46, 0xbe, 0x30, - 0x16, 0xca, 0x3b, 0x94, 0x77, 0xab, 0x68, 0xe9, 0xa3, 0xdf, 0x0b, 0x2d, 0xfd, 0xe5, 0xb4, 0xf4, - 0xd1, 0xef, 0x85, 0x36, 0x3f, 0xa4, 0xbc, 0x88, 0xb3, 0x48, 0x61, 0xd1, 0xc8, 0x32, 0x18, 0x80, - 0x37, 0x27, 0x1e, 0xf9, 0x80, 0x39, 0xf1, 0x72, 0xf1, 0xb2, 0x91, 0x4f, 0x46, 0x41, 0x8c, 0x8c, - 0x18, 0x19, 0x31, 0x32, 0x62, 0x64, 0xc4, 0xc8, 0x88, 0x91, 0x11, 0x23, 0x23, 0x46, 0x4e, 0x9c, - 0x35, 0x67, 0x91, 0xc2, 0xc2, 0x91, 0x86, 0x11, 0xf1, 0xb3, 0x69, 0x46, 0xfc, 0x3b, 0x27, 0xfe, - 0x2d, 0x5a, 0x3a, 0x72, 0x6a, 0x0c, 0xc4, 0xbe, 0x88, 0x7d, 0x11, 0xfb, 0x22, 0xf6, 0x45, 0xec, - 0x8b, 0xd8, 0x17, 0xb1, 0x2f, 0x62, 0xdf, 0x09, 0x28, 0xc3, 0xe2, 0x91, 0x25, 0x20, 0x5f, 0xac, - 0x1e, 0x99, 0x0d, 0xf7, 0xea, 0x2a, 0x1f, 0xf9, 0xc2, 0x58, 0x88, 0x83, 0x11, 0x07, 0x23, 0x0e, - 0x46, 0x1c, 0x8c, 0x38, 0x18, 0x71, 0x30, 0xe2, 0x60, 0xc4, 0xc1, 0x2f, 0xba, 0xeb, 0xb1, 0x80, - 0x64, 0x19, 0xd8, 0xf8, 0xcd, 0x89, 0x47, 0xbc, 0x3c, 0x27, 0x5e, 0x2e, 0x5a, 0x42, 0x72, 0x6a, - 0x0c, 0xc4, 0xc7, 0x88, 0x8f, 0x11, 0x1f, 0x23, 0x3e, 0x46, 0x7c, 0x8c, 0xf8, 0x18, 0xf1, 0x31, - 0xe2, 0xe3, 0x71, 0x59, 0x97, 0xb3, 0x48, 0x61, 0x11, 0x49, 0xa3, 0x68, 0xf8, 0xd9, 0x34, 0x23, - 0xf6, 0x9d, 0x13, 0xfb, 0xea, 0x29, 0x23, 0x39, 0x33, 0x12, 0xe2, 0x60, 0xc4, 0xc1, 0x88, 0x83, - 0x11, 0x07, 0x23, 0x0e, 0x46, 0x1c, 0x8c, 0x38, 0x18, 0x71, 0xf0, 0x23, 0x40, 0xc3, 0x42, 0x92, - 0x65, 0x41, 0x61, 0xac, 0x24, 0x39, 0xe7, 0x37, 0xe7, 0x3c, 0xb7, 0x45, 0xce, 0x6b, 0x81, 0x73, - 0x5a, 0x00, 0xb4, 0xc4, 0xbb, 0x65, 0xbb, 0xd1, 0x68, 0x5a, 0x55, 0x6b, 0xcf, 0xfa, 0x7f, 0x7b, - 0x9f, 0x3f, 0x59, 0x07, 0x44, 0x11, 0xeb, 0x34, 0x70, 0xa8, 0x67, 0xb9, 0x81, 0x78, 0xdc, 0x40, - 0x57, 0xfc, 0x94, 0x70, 0x32, 0xa0, 0xc9, 0x3e, 0x5b, 0x2c, 0xa6, 0x2d, 0x7a, 0x10, 0xcd, 0xc0, - 0xda, 0x9c, 0x53, 0x69, 0x1a, 0x07, 0xbf, 0xd3, 0x7b, 0xc2, 0xe6, 0x3d, 0x09, 0x7b, 0x9c, 0x07, - 0x8a, 0xc4, 0xd8, 0x20, 0xdb, 0x29, 0x90, 0xf6, 0x90, 0xfa, 0x24, 0x24, 0x6a, 0x18, 0xcf, 0xe9, - 0x87, 0x20, 0xa4, 0xdc, 0x4e, 0x6c, 0xb8, 0x2a, 0x4b, 0x45, 0xd9, 0x87, 0x97, 0x3e, 0x7e, 0x90, - 0x8a, 0x28, 0xfa, 0x61, 0x8c, 0xc2, 0xb3, 0xe8, 0x8e, 0x8a, 0x54, 0x22, 0xb2, 0x15, 0x1f, 0x1f, - 0x89, 0x74, 0x99, 0xbe, 0xed, 0x4f, 0xc6, 0x7a, 0xa7, 0x67, 0xa6, 0xe7, 0x98, 0xbb, 0x8a, 0x43, - 0xa5, 0x2d, 0x58, 0x98, 0x69, 0xe2, 0x1e, 0x4b, 0x18, 0x4d, 0x5d, 0x3c, 0xe7, 0x3a, 0x65, 0xb3, - 0xab, 0x33, 0xdb, 0xd3, 0x79, 0xec, 0xe8, 0xdc, 0xf6, 0x73, 0x5e, 0x19, 0x53, 0xd8, 0x5e, 0x2e, - 0x2c, 0x50, 0x8a, 0xd8, 0xc7, 0x7a, 0x35, 0x58, 0x66, 0x3b, 0x38, 0x5d, 0x2d, 0xa9, 0x04, 0xe3, - 0x83, 0x2c, 0xcb, 0x95, 0x16, 0xcc, 0x42, 0x1d, 0x3c, 0x07, 0x62, 0xdb, 0xf3, 0x18, 0x91, 0xa8, - 0x79, 0xf3, 0x43, 0xde, 0xd1, 0x04, 0x42, 0xd3, 0xb7, 0x5a, 0xb4, 0x0a, 0xe5, 0xf1, 0x59, 0x70, - 0xb2, 0x6b, 0x94, 0xc9, 0x85, 0x73, 0x9e, 0xbd, 0x03, 0xea, 0x92, 0xc8, 0x53, 0x99, 0x4e, 0x4f, - 0x25, 0xde, 0x05, 0xf3, 0x2d, 0xcb, 0x35, 0x2a, 0x35, 0x54, 0x6a, 0xa5, 0x2a, 0xb5, 0x7e, 0x10, - 0x78, 0x94, 0xf0, 0x3c, 0x5a, 0xad, 0x8e, 0x5a, 0x6d, 0x1e, 0xa1, 0xec, 0xf8, 0x8c, 0x5f, 0x28, - 0xa2, 0x22, 0xd4, 0x6d, 0x45, 0x74, 0xdb, 0xd4, 0x34, 0xae, 0xa5, 0x86, 0x63, 0x2e, 0xe3, 0x0e, - 0xbd, 0xcb, 0xae, 0xe1, 0x26, 0x17, 0xa2, 0x6a, 0x41, 0xd5, 0x52, 0xaa, 0x6a, 0x89, 0x18, 0x57, - 0x99, 0xda, 0x6c, 0xe4, 0x68, 0xaf, 0x91, 0xd3, 0x39, 0x98, 0x43, 0xec, 0x17, 0x71, 0x06, 0x16, - 0x75, 0x02, 0x6a, 0x73, 0x43, 0x15, 0x77, 0x3f, 0xe5, 0x70, 0xf6, 0x15, 0x72, 0xf2, 0x69, 0x6b, - 0x8b, 0xb1, 0x4c, 0x73, 0x08, 0x82, 0xe0, 0x04, 0x0b, 0xc8, 0xac, 0xea, 0xab, 0x50, 0x02, 0x11, - 0xd8, 0x2f, 0x10, 0xd8, 0xaf, 0xe6, 0x6d, 0x2d, 0x21, 0xd7, 0xa8, 0x19, 0xc4, 0x70, 0xac, 0x61, - 0x32, 0xc2, 0xae, 0xe9, 0x8b, 0x11, 0x7a, 0x21, 0xf4, 0x2a, 0x15, 0x7a, 0x29, 0xe6, 0x53, 0xc5, - 0xec, 0xef, 0x12, 0xd1, 0x17, 0xa2, 0x2f, 0x44, 0x5f, 0x88, 0xbe, 0x96, 0x86, 0x0e, 0x3b, 0x21, - 0x52, 0xed, 0x67, 0xd1, 0x8a, 0xc8, 0x86, 0xfd, 0x7a, 0x16, 0xd7, 0x12, 0x99, 0xf9, 0x2a, 0xca, - 0x8e, 0xc8, 0xe2, 0x8b, 0x10, 0x89, 0x21, 0x12, 0x2b, 0x9d, 0x04, 0xab, 0x77, 0x72, 0xc0, 0xb0, - 0x0e, 0xc2, 0x30, 0x84, 0x61, 0xcf, 0xa7, 0xae, 0xd3, 0x6e, 0x37, 0x11, 0x81, 0x2d, 0x83, 0x06, - 0x1a, 0x07, 0xd3, 0x65, 0x54, 0x41, 0xc9, 0x55, 0xa8, 0x83, 0x50, 0x07, 0x95, 0xaa, 0x83, 0x30, - 0x70, 0xad, 0x80, 0x4d, 0xb3, 0xdd, 0x68, 0x34, 0xbb, 0x6f, 0x05, 0x3c, 0x5b, 0x18, 0x3a, 0xfe, - 0xa6, 0x59, 0x93, 0x79, 0x22, 0xd7, 0x52, 0xaf, 0x04, 0x21, 0x15, 0x55, 0x39, 0x8a, 0x73, 0xc8, - 0xac, 0x5e, 0xa6, 0x2f, 0x46, 0x2d, 0x83, 0x5a, 0x26, 0x87, 0x8c, 0x3e, 0x25, 0xdc, 0x21, 0x2a, - 0x10, 0xf7, 0xb1, 0xf8, 0x37, 0xae, 0x99, 0x28, 0x8f, 0x7c, 0x2a, 0x48, 0x86, 0x78, 0xfe, 0x27, - 0xea, 0xa9, 0x95, 0xe1, 0x9a, 0x43, 0x1e, 0xf9, 0xf1, 0x43, 0x62, 0x3e, 0xd4, 0x5c, 0x25, 0x87, - 0x43, 0x2a, 0x30, 0x68, 0xad, 0x28, 0x4d, 0x37, 0x35, 0x8b, 0x6b, 0xa9, 0xcc, 0x54, 0x16, 0xc1, - 0xf0, 0xe8, 0xbc, 0x8a, 0xaf, 0x42, 0xf5, 0x85, 0xea, 0x6b, 0xe9, 0xd5, 0x17, 0x73, 0x28, 0x57, - 0x4c, 0xdd, 0x0b, 0xea, 0xe6, 0x51, 0x5f, 0x19, 0x98, 0x9c, 0xca, 0xf1, 0xf8, 0x56, 0x1f, 0x89, - 0xa4, 0xf9, 0x8b, 0xd4, 0xa4, 0xc9, 0x84, 0xd5, 0x0c, 0x87, 0xec, 0x29, 0x0b, 0x25, 0x73, 0x65, - 0xd9, 0xe7, 0x54, 0x04, 0xe9, 0x73, 0x13, 0x4e, 0xaa, 0x85, 0x1e, 0x5e, 0xc7, 0x4b, 0x14, 0x7b, - 0x99, 0x99, 0x97, 0x72, 0x1d, 0x87, 0x55, 0x16, 0x51, 0x75, 0x43, 0xd3, 0xf3, 0x87, 0x22, 0x08, - 0xf7, 0x94, 0x0f, 0xf9, 0x15, 0x88, 0xb0, 0x39, 0x55, 0x90, 0xdf, 0x80, 0xc9, 0x60, 0x67, 0xa7, - 0xd6, 0x68, 0xef, 0x9f, 0x1f, 0xf5, 0x8e, 0x39, 0xe8, 0x57, 0xe9, 0x0f, 0xc2, 0x30, 0xf0, 0x98, - 0x7d, 0x4f, 0xec, 0x24, 0xc9, 0x99, 0xf1, 0x01, 0xe4, 0xd7, 0xf1, 0x43, 0x4f, 0x42, 0x7e, 0xfe, - 0x40, 0xf1, 0x33, 0x27, 0x02, 0x7d, 0xba, 0xbd, 0xe8, 0x30, 0x0c, 0x78, 0x6f, 0x78, 0x2f, 0x99, - 0x4d, 0xbc, 0x3f, 0x39, 0x68, 0x71, 0x4b, 0xd5, 0x90, 0x0a, 0x4e, 0x55, 0xf3, 0xb4, 0xcf, 0x60, - 0x8b, 0x2c, 0x4a, 0xe9, 0x4e, 0xad, 0x51, 0x6f, 0xac, 0xc2, 0x4b, 0xd4, 0x41, 0xbf, 0x04, 0x77, - 0x19, 0x67, 0x7d, 0xc2, 0x1d, 0xd0, 0xc7, 0xdc, 0x91, 0x1e, 0xe8, 0xbd, 0xe4, 0x05, 0x36, 0xf1, - 0x2e, 0x89, 0xf7, 0x1d, 0xb4, 0x78, 0x0a, 0x3d, 0x21, 0x61, 0x63, 0x41, 0x12, 0x82, 0xc6, 0x1b, - 0xf7, 0x82, 0x01, 0x07, 0xb3, 0xc4, 0x8b, 0x3e, 0x85, 0x01, 0x3f, 0xe3, 0xb0, 0x61, 0x07, 0xf1, - 0xda, 0x90, 0x9f, 0xff, 0x26, 0x60, 0x36, 0x3d, 0xfa, 0xfb, 0x0c, 0xf4, 0x1a, 0x28, 0xff, 0x22, - 0xea, 0xa7, 0xc4, 0x2c, 0xe4, 0x57, 0x71, 0xd8, 0x80, 0x29, 0xe2, 0xf5, 0x82, 0x5b, 0x2a, 0x3c, - 0xc6, 0x41, 0xbf, 0xcb, 0x90, 0x85, 0x21, 0x68, 0x10, 0xee, 0x12, 0x09, 0x5a, 0xc2, 0x3a, 0x81, - 0x2d, 0xf7, 0x49, 0xdf, 0xa3, 0xa7, 0xc4, 0xf6, 0xc8, 0x3d, 0x15, 0xd0, 0x09, 0xa8, 0xbf, 0x98, - 0xa0, 0x1e, 0x95, 0xb2, 0xd7, 0xe8, 0x81, 0x86, 0x80, 0x24, 0xec, 0x83, 0x06, 0x1f, 0x2c, 0xb8, - 0x6b, 0x80, 0xd6, 0x7a, 0xdc, 0x25, 0x12, 0xbe, 0xd6, 0xfe, 0x74, 0x70, 0xb8, 0xf7, 0x79, 0x0f, - 0x34, 0xed, 0x14, 0x2a, 0x66, 0x13, 0x6f, 0x7f, 0x48, 0x38, 0xa7, 0x5e, 0xe2, 0x4f, 0x85, 0xfc, - 0x3a, 0x36, 0x93, 0x76, 0x70, 0x7c, 0x71, 0x72, 0xe3, 0x11, 0x0e, 0xfa, 0x3d, 0x6c, 0x75, 0xe8, - 0x47, 0x1e, 0x74, 0xdd, 0x7d, 0xa8, 0x86, 0xb0, 0x75, 0x9e, 0x12, 0xb5, 0xda, 0x0e, 0x74, 0xa5, - 0x7d, 0x10, 0xd8, 0x72, 0xa2, 0xb8, 0xff, 0x0c, 0xa5, 0x12, 0x94, 0x80, 0x76, 0x23, 0xc5, 0xb0, - 0x7c, 0x00, 0x5d, 0x52, 0xdd, 0xf8, 0xb7, 0x44, 0xd0, 0x2f, 0x4c, 0xa8, 0x88, 0x78, 0x9f, 0x99, - 0x0d, 0xdc, 0xce, 0xa0, 0xc2, 0x23, 0xbc, 0xb1, 0x02, 0xee, 0x0b, 0xd0, 0x2e, 0x3d, 0x69, 0x43, - 0x67, 0x96, 0x21, 0x3f, 0xff, 0x80, 0x0d, 0x48, 0x9f, 0x8d, 0x94, 0x1e, 0x70, 0x6a, 0x30, 0x35, - 0x5c, 0x27, 0xfa, 0x62, 0x0c, 0x10, 0x41, 0x63, 0xaa, 0xbe, 0xf7, 0x85, 0xda, 0x8a, 0x5c, 0x28, - 0x02, 0x1a, 0x93, 0xc8, 0x80, 0x53, 0xd5, 0x23, 0x6a, 0x08, 0x1c, 0x97, 0x28, 0x1a, 0xf0, 0x9d, - 0x1a, 0x74, 0xf7, 0xea, 0x30, 0x90, 0xaa, 0x47, 0x40, 0x7b, 0xf4, 0x18, 0x68, 0x20, 0x15, 0x49, - 0xd0, 0x54, 0xce, 0xed, 0x2d, 0xe1, 0xbd, 0x1e, 0x68, 0xe4, 0x34, 0x74, 0x86, 0xf5, 0x9d, 0x46, - 0x03, 0xba, 0x99, 0x94, 0xf4, 0x32, 0x0f, 0x3d, 0x7a, 0x17, 0x80, 0x56, 0x0f, 0xce, 0x4d, 0xff, - 0xdc, 0xb6, 0x57, 0xc1, 0xce, 0x13, 0x94, 0xd8, 0xc3, 0x83, 0x8b, 0x13, 0xd0, 0x98, 0xd0, 0x0d, - 0xc1, 0x6f, 0x26, 0x79, 0x4a, 0xec, 0x13, 0xf8, 0xde, 0x0b, 0xe6, 0x13, 0x71, 0x7f, 0x7c, 0x71, - 0xf0, 0x19, 0x3c, 0xef, 0x7c, 0x76, 0x43, 0xc5, 0x31, 0xe8, 0x7d, 0xa5, 0xe8, 0x09, 0xe3, 0xb0, - 0x03, 0x70, 0xec, 0x00, 0xb8, 0x8d, 0x37, 0x0c, 0x7c, 0x1a, 0x72, 0x02, 0xfa, 0x34, 0x40, 0x8f, - 0x45, 0x73, 0x59, 0x5f, 0xd0, 0x15, 0xb0, 0xad, 0x07, 0xdb, 0xb5, 0x26, 0x51, 0x9d, 0xd6, 0x77, - 0xd8, 0x38, 0xd6, 0x03, 0xcd, 0x9f, 0x79, 0x4d, 0x16, 0xde, 0x41, 0xf7, 0x7c, 0x0d, 0x14, 0x68, - 0xc5, 0x36, 0xbc, 0x0f, 0xa9, 0xb0, 0xe1, 0x1f, 0xe8, 0x51, 0xaa, 0x4e, 0xcf, 0x8b, 0x40, 0x7b, - 0xe9, 0x25, 0x70, 0x46, 0x59, 0x2a, 0x22, 0x4e, 0x60, 0x9f, 0x67, 0xe6, 0x7e, 0x71, 0x59, 0x92, - 0xf3, 0x09, 0x19, 0xec, 0xc1, 0xf6, 0x0b, 0x25, 0x46, 0xc3, 0xc1, 0xf1, 0x01, 0x6c, 0x92, 0x32, - 0xb6, 0x7a, 0x80, 0x27, 0x40, 0x8e, 0xb8, 0x99, 0x55, 0x30, 0xa7, 0x5d, 0x71, 0x14, 0x88, 0x5b, - 0x22, 0x1c, 0xd8, 0x2f, 0x41, 0x7c, 0x7a, 0x4e, 0x3d, 0x72, 0x0f, 0x1a, 0x31, 0x01, 0xf7, 0x5a, - 0x4f, 0x72, 0xbb, 0xda, 0x2d, 0xd0, 0x47, 0x5b, 0x82, 0xce, 0x4d, 0xfb, 0xc7, 0x83, 0x6d, 0xfb, - 0x90, 0x7a, 0xe3, 0x34, 0x0c, 0x2f, 0x6e, 0x99, 0xb2, 0x87, 0xc0, 0x35, 0xc4, 0x9e, 0x64, 0x67, - 0x91, 0x02, 0xfe, 0x12, 0x97, 0x0e, 0x68, 0x45, 0x4d, 0x41, 0x1f, 0x66, 0x2e, 0x61, 0xbb, 0x74, - 0xa5, 0xef, 0xc8, 0x83, 0x3b, 0x06, 0xdc, 0x72, 0xb3, 0xbf, 0x5f, 0x06, 0x17, 0xf1, 0x3f, 0xf0, - 0xe5, 0xd1, 0x31, 0x5f, 0x81, 0xc8, 0xbe, 0x93, 0x60, 0xc0, 0x6c, 0xe2, 0x41, 0x77, 0x3c, 0x08, - 0x3a, 0x88, 0x3c, 0x22, 0xa0, 0x7b, 0xdc, 0x27, 0x95, 0x54, 0x2e, 0x83, 0xef, 0x94, 0x9f, 0x03, - 0x2f, 0x3e, 0x22, 0xa1, 0xfb, 0x82, 0xee, 0x1a, 0xf5, 0x26, 0xf0, 0x84, 0x2e, 0x17, 0x78, 0x12, - 0x33, 0xec, 0xd3, 0xec, 0x83, 0xde, 0xfe, 0x3e, 0xb1, 0x2f, 0xa8, 0xbd, 0x1f, 0x70, 0x25, 0x02, - 0xcf, 0xa3, 0xce, 0xf1, 0x11, 0x68, 0x9d, 0xed, 0xf0, 0xbf, 0x1b, 0xab, 0x90, 0x13, 0x7f, 0xb1, - 0x52, 0x21, 0xd4, 0xab, 0xc1, 0x94, 0x25, 0x49, 0xfe, 0x76, 0xc0, 0x39, 0xb5, 0x61, 0x17, 0xbf, - 0x70, 0x3d, 0xc2, 0x69, 0x8c, 0x40, 0x40, 0x03, 0x0f, 0xb9, 0x7d, 0xc1, 0x06, 0xd0, 0x21, 0xad, - 0x23, 0xeb, 0x47, 0x07, 0x27, 0xb0, 0xd1, 0x2c, 0xec, 0x6c, 0x34, 0x3f, 0xb0, 0xc9, 0x17, 0x2a, - 0x24, 0x0b, 0x78, 0x1d, 0x7e, 0x1c, 0x4a, 0xc3, 0xef, 0xaf, 0x44, 0xe6, 0xec, 0xd1, 0xdf, 0xa0, - 0x4f, 0x35, 0x6c, 0x5f, 0x5d, 0x18, 0xc8, 0x15, 0x28, 0xee, 0xb4, 0x22, 0xd5, 0x18, 0x6f, 0x80, - 0x07, 0x72, 0x24, 0xc5, 0x94, 0x3d, 0x4a, 0x6e, 0x40, 0x87, 0x41, 0x48, 0x11, 0xae, 0x40, 0xad, - 0x8b, 0x4b, 0x41, 0xb8, 0x0c, 0x03, 0x01, 0xbd, 0x76, 0xdb, 0xe1, 0x09, 0xe8, 0x1a, 0x3c, 0x83, - 0xdd, 0xdd, 0x9d, 0x26, 0x6c, 0xd4, 0xda, 0x5c, 0x0d, 0x93, 0xee, 0x82, 0x8a, 0x1b, 0x06, 0xbb, - 0x6a, 0x5b, 0x42, 0x18, 0x1c, 0x72, 0x1b, 0x76, 0x4d, 0xc9, 0x30, 0xe0, 0x9d, 0x95, 0x60, 0xf5, - 0x9b, 0xfb, 0xd2, 0x27, 0xb6, 0x03, 0x3f, 0x54, 0xeb, 0x20, 0xb8, 0xe5, 0xf0, 0xd9, 0x1b, 0x3f, - 0xf4, 0xe4, 0x65, 0x04, 0x3d, 0x24, 0x39, 0x4d, 0x7d, 0x82, 0xde, 0x05, 0x61, 0xe4, 0x8e, 0x04, - 0x5e, 0x76, 0x75, 0x54, 0xbf, 0xe6, 0x33, 0xb3, 0x2f, 0x81, 0x1f, 0x8e, 0x9b, 0x66, 0x07, 0xbe, - 0xe6, 0x3b, 0x85, 0x1d, 0x22, 0x5e, 0x1d, 0x48, 0x0e, 0x1b, 0x4b, 0x1d, 0x78, 0x36, 0x3b, 0xe4, - 0x4e, 0x0f, 0xb4, 0x51, 0x71, 0x33, 0xaa, 0x46, 0x75, 0x39, 0x80, 0xef, 0xcb, 0xfb, 0x93, 0xdb, - 0x2b, 0xe2, 0xcd, 0xf3, 0x1a, 0xd0, 0x53, 0xba, 0xfc, 0x1b, 0x6f, 0x15, 0x3a, 0x81, 0xc0, 0xc7, - 0xb4, 0x4c, 0x3a, 0xb0, 0x23, 0xc5, 0x57, 0x21, 0xc0, 0x57, 0xd6, 0x3e, 0x46, 0xdc, 0xf1, 0x28, - 0xf0, 0x7a, 0xef, 0xc7, 0x3e, 0xec, 0xcc, 0xf1, 0xe6, 0x36, 0xf4, 0x7a, 0x35, 0xfb, 0x1c, 0x76, - 0xc7, 0xab, 0x51, 0x46, 0xd7, 0x3e, 0xf0, 0xa4, 0x6b, 0xa2, 0xfc, 0x7e, 0x00, 0xbb, 0xa3, 0xcf, - 0xa4, 0x96, 0xf5, 0xd9, 0x05, 0xf8, 0xbe, 0x44, 0x21, 0xf0, 0x84, 0x65, 0x9b, 0xf4, 0x3d, 0xfa, - 0x48, 0x3a, 0x9d, 0xbb, 0x3d, 0xe0, 0x7e, 0x0a, 0x19, 0xb8, 0xea, 0x96, 0x08, 0x7a, 0x12, 0x04, - 0x61, 0x1f, 0x78, 0x2c, 0x7c, 0x4a, 0x40, 0x1d, 0xad, 0x44, 0xde, 0xe0, 0x98, 0x39, 0x38, 0xfa, - 0x74, 0x00, 0xdd, 0x8d, 0x04, 0xbb, 0xf4, 0x1c, 0x11, 0x04, 0x76, 0xe8, 0x78, 0xdb, 0xf7, 0x40, - 0xbb, 0x5d, 0x04, 0x71, 0x58, 0x70, 0xba, 0xb7, 0xbf, 0x1a, 0x9d, 0x66, 0xf6, 0x7d, 0x25, 0x57, - 0xc3, 0x6d, 0x71, 0xb7, 0xd3, 0x39, 0x21, 0xa1, 0x04, 0x9e, 0x97, 0x00, 0x1a, 0x1a, 0x86, 0x0e, - 0x4f, 0x22, 0xd1, 0x62, 0xf5, 0x5d, 0x87, 0x0d, 0xac, 0xc2, 0x5b, 0x12, 0x1e, 0x04, 0xaa, 0x5e, - 0xff, 0x28, 0x41, 0x6f, 0xa9, 0xc8, 0x53, 0xb0, 0x15, 0x06, 0x81, 0xed, 0xbe, 0x1b, 0xbb, 0xb8, - 0x1b, 0xc0, 0x13, 0xe6, 0x87, 0xcd, 0x46, 0xf3, 0x13, 0x51, 0xf4, 0x3b, 0xa5, 0x21, 0xec, 0x52, - 0x24, 0x22, 0x84, 0xdd, 0x62, 0x06, 0xbc, 0x63, 0x7e, 0x20, 0x9a, 0xb5, 0xe6, 0xf9, 0xc1, 0x25, - 0xf8, 0x0c, 0xce, 0xd8, 0xb6, 0x1b, 0x52, 0xe2, 0xac, 0x40, 0x41, 0xc6, 0x3e, 0x91, 0xcc, 0x86, - 0x5e, 0xec, 0x16, 0x78, 0x19, 0x83, 0xa1, 0x94, 0x0c, 0xb8, 0xa2, 0x06, 0x5e, 0x85, 0x61, 0x92, - 0x64, 0x7e, 0xc4, 0xfa, 0xf0, 0x7b, 0x6f, 0x4e, 0xb7, 0xf1, 0x5a, 0x85, 0x7e, 0xa2, 0x92, 0x85, - 0xb0, 0x23, 0x0d, 0x26, 0xbb, 0xeb, 0x40, 0x89, 0x15, 0xf0, 0xc3, 0x78, 0xe4, 0x16, 0x74, 0x70, - 0x3f, 0xf4, 0x56, 0x83, 0xac, 0xef, 0x37, 0xb7, 0x6b, 0x21, 0x11, 0x31, 0xfa, 0x80, 0x5d, 0xdb, - 0x5d, 0xf8, 0xd0, 0x3b, 0xe2, 0x00, 0x4f, 0x37, 0x8a, 0x8d, 0xbb, 0x9e, 0x08, 0xee, 0xee, 0x57, - 0x40, 0xbc, 0xb6, 0x92, 0x0a, 0x31, 0x1f, 0x61, 0xfb, 0xf5, 0xc6, 0xef, 0xd2, 0x39, 0x05, 0x1e, - 0xc9, 0x45, 0x1d, 0x46, 0x4e, 0x09, 0xf3, 0xe0, 0x77, 0xa0, 0x90, 0xec, 0xee, 0x32, 0x38, 0x0a, - 0x22, 0xb1, 0x0a, 0xa5, 0x33, 0x3b, 0x7f, 0x9d, 0xee, 0x7d, 0x86, 0x1d, 0x02, 0xdc, 0xbb, 0x85, - 0x5e, 0x24, 0x9a, 0x85, 0x2b, 0x50, 0x12, 0xd7, 0x0e, 0xfc, 0x30, 0x90, 0x0c, 0x7e, 0x7f, 0x16, - 0xc9, 0xc2, 0x0b, 0x36, 0x80, 0xdf, 0x19, 0x0e, 0x76, 0xf9, 0x7d, 0xe0, 0xb1, 0x5d, 0x93, 0x1a, - 0x31, 0xa0, 0x13, 0x3d, 0x85, 0x6b, 0xd7, 0x5b, 0xb0, 0x53, 0x6d, 0xc3, 0x80, 0xd7, 0xdb, 0xa0, - 0x0b, 0xf5, 0x10, 0x5b, 0x51, 0x8f, 0xc9, 0x53, 0xaa, 0xc8, 0xc9, 0xd9, 0x19, 0xec, 0x53, 0xed, - 0x01, 0xa7, 0x65, 0x59, 0x18, 0xb2, 0xa4, 0x8c, 0x95, 0x4b, 0x6c, 0xe8, 0x61, 0xd8, 0xe3, 0x06, - 0xf2, 0xa0, 0x8d, 0x0a, 0x77, 0x15, 0x4a, 0x58, 0x3d, 0xaf, 0xf6, 0x06, 0x3f, 0x74, 0x53, 0xc8, - 0x46, 0xb3, 0x01, 0xbb, 0xa8, 0x95, 0x43, 0x61, 0xa7, 0xa6, 0xd6, 0x41, 0xc7, 0xdc, 0x50, 0x69, - 0xc3, 0xee, 0x4c, 0x11, 0xcb, 0xd7, 0x15, 0x48, 0xeb, 0xf4, 0x7c, 0xd8, 0x55, 0x31, 0x60, 0xc3, - 0x0d, 0x26, 0x1d, 0x0e, 0x9a, 0xbb, 0x54, 0xc0, 0xad, 0xb8, 0x51, 0x9c, 0xfb, 0xc7, 0x0b, 0xe8, - 0xfe, 0xdf, 0x5e, 0xc0, 0xb8, 0xba, 0x0c, 0x92, 0x7f, 0x2e, 0xa8, 0x60, 0xb0, 0x51, 0xdf, 0x10, - 0x7a, 0xeb, 0xd6, 0xbb, 0x46, 0x7b, 0x18, 0x71, 0xf5, 0x49, 0x04, 0xb0, 0x4b, 0x7f, 0x8e, 0x39, - 0xe4, 0x26, 0x71, 0x4e, 0x08, 0x68, 0xbe, 0x2c, 0x84, 0x2d, 0xa6, 0x02, 0xc5, 0xcf, 0x54, 0x04, - 0x3d, 0x15, 0x07, 0x34, 0x60, 0x0d, 0xc3, 0x10, 0xb8, 0x44, 0x0a, 0x61, 0xe7, 0x95, 0x3b, 0x36, - 0x6c, 0xf7, 0x28, 0xf4, 0x7e, 0xb3, 0xae, 0x70, 0xeb, 0x9d, 0x53, 0x57, 0xc0, 0xaf, 0x50, 0x10, - 0x8a, 0x40, 0xd1, 0x80, 0xd7, 0x6b, 0xa7, 0x7d, 0xa6, 0xa0, 0xf7, 0xc2, 0x3a, 0xb6, 0x61, 0x9b, - 0x40, 0x36, 0x17, 0xc0, 0xf3, 0x03, 0x61, 0x1f, 0x6b, 0x3f, 0x04, 0x8d, 0x8c, 0xfe, 0x81, 0x9d, - 0xc6, 0x48, 0xe4, 0x3d, 0xb7, 0x57, 0xa3, 0x52, 0xec, 0x69, 0xef, 0x18, 0x38, 0xbe, 0x3b, 0x8d, - 0x3c, 0xc5, 0x3c, 0xc6, 0xbf, 0xc3, 0x57, 0x71, 0xe3, 0x6a, 0x6d, 0xc7, 0xe1, 0x9e, 0xe3, 0x08, - 0x0a, 0x3b, 0xa9, 0xd1, 0x0e, 0x5c, 0x97, 0x82, 0x5e, 0x0d, 0x9b, 0x4a, 0xe8, 0x04, 0xd3, 0xc7, - 0xbf, 0xf6, 0xc2, 0xc6, 0x29, 0xec, 0x54, 0x7e, 0x29, 0xfa, 0xc0, 0xab, 0x83, 0x81, 0xa6, 0x8a, - 0x93, 0xd2, 0xfa, 0x7f, 0x00, 0x27, 0x8c, 0x1d, 0x4f, 0x82, 0x4e, 0x85, 0xf0, 0x9a, 0x2c, 0x84, - 0x5e, 0x33, 0x92, 0x49, 0x07, 0x76, 0x7d, 0x64, 0x87, 0x0d, 0x98, 0x22, 0xde, 0x5f, 0x82, 0x84, - 0x21, 0x15, 0x2b, 0x94, 0x59, 0x3a, 0x5d, 0x12, 0xa2, 0x01, 0xbe, 0xc2, 0xbb, 0xbc, 0x74, 0x60, - 0x17, 0x32, 0x4c, 0x12, 0x97, 0xbf, 0x5c, 0x42, 0xc7, 0x1e, 0x2b, 0x10, 0xc7, 0x44, 0x94, 0x3f, - 0x6e, 0x31, 0xbd, 0x12, 0x81, 0x4c, 0xab, 0x51, 0x43, 0x88, 0x28, 0xff, 0x9c, 0x38, 0x2c, 0x00, - 0x6d, 0x7f, 0xdb, 0x2c, 0x04, 0xdf, 0xb5, 0xdc, 0xb5, 0x77, 0xb6, 0xb7, 0xef, 0x60, 0x77, 0xdb, - 0xb4, 0x57, 0xa0, 0x2e, 0x84, 0x60, 0xce, 0x80, 0xc2, 0xaf, 0xe4, 0xf4, 0x97, 0x9a, 0xa8, 0x0c, - 0xf0, 0xc7, 0x9b, 0x28, 0xff, 0x28, 0x82, 0xdd, 0x9e, 0xaf, 0xcf, 0x94, 0x84, 0x1e, 0x03, 0x51, - 0x6f, 0xee, 0xb6, 0x56, 0xa9, 0x44, 0xc4, 0x6a, 0xe8, 0xef, 0xb4, 0xe6, 0x6a, 0x82, 0x49, 0x60, - 0x57, 0x1c, 0x87, 0xdd, 0x69, 0x7a, 0x08, 0xbd, 0x05, 0x27, 0x70, 0x46, 0x64, 0xaa, 0x82, 0x61, - 0x4f, 0x04, 0x2e, 0x83, 0x7d, 0x1a, 0xc6, 0xbd, 0x38, 0x57, 0x80, 0x0f, 0x49, 0xaa, 0x9f, 0x1d, - 0xc3, 0xae, 0x7e, 0xf6, 0x4f, 0x63, 0xb7, 0x59, 0x87, 0xed, 0xe1, 0xa6, 0x83, 0xd5, 0xe8, 0xeb, - 0x7a, 0xc3, 0x6c, 0x76, 0x36, 0x3a, 0x1c, 0x87, 0x05, 0x4b, 0xda, 0xe4, 0xba, 0xf2, 0xfa, 0x5d, - 0x09, 0x93, 0x96, 0x6f, 0xb2, 0x1e, 0x0d, 0x62, 0xc7, 0xc9, 0x01, 0x97, 0xcb, 0x7f, 0xce, 0x18, - 0x92, 0xe5, 0x6a, 0x56, 0x58, 0xfe, 0xa3, 0x12, 0x61, 0x73, 0xaa, 0x20, 0x3c, 0xe9, 0xa4, 0xea, - 0xd6, 0xfe, 0xf9, 0x51, 0xef, 0x98, 0x83, 0x78, 0xe4, 0xfe, 0x20, 0x0c, 0x03, 0x8f, 0xd9, 0xf7, - 0xc4, 0xb6, 0x83, 0x88, 0x2b, 0xc6, 0x07, 0x10, 0x1e, 0xdb, 0x0f, 0xf3, 0x34, 0x98, 0x29, 0xff, - 0x39, 0x03, 0xc5, 0xcf, 0x9c, 0x08, 0xc4, 0x29, 0x1b, 0xb5, 0xfe, 0x2c, 0xd4, 0x94, 0xbf, 0xfc, - 0xa7, 0x9e, 0x34, 0x40, 0x6b, 0xe6, 0x8b, 0xa5, 0x5c, 0x80, 0x88, 0x18, 0x97, 0xc5, 0x69, 0x40, - 0x7a, 0xd8, 0x3a, 0x88, 0x87, 0xe5, 0x2e, 0xe3, 0xac, 0x4f, 0xf2, 0x34, 0x3c, 0x5a, 0xc0, 0x71, - 0xcb, 0x97, 0x63, 0x54, 0xfe, 0x83, 0x7a, 0x81, 0x4d, 0xbc, 0x4b, 0xe2, 0x7d, 0x07, 0x21, 0x0e, - 0x42, 0x4f, 0x48, 0x18, 0x98, 0x26, 0x4f, 0x3b, 0xf8, 0x05, 0xe8, 0xd9, 0x7b, 0xc1, 0x80, 0x80, - 0x2f, 0xe2, 0x45, 0x9f, 0xf2, 0xf6, 0xae, 0x5e, 0xc0, 0xd3, 0x12, 0xaf, 0x0d, 0xe1, 0x39, 0x47, - 0x0d, 0xd8, 0xfe, 0x3e, 0x03, 0x31, 0xa7, 0xca, 0xbf, 0x88, 0xfa, 0x05, 0xca, 0xa7, 0x94, 0xff, - 0xc8, 0xe3, 0x50, 0x9c, 0x5e, 0x70, 0x4b, 0x85, 0xc7, 0x38, 0x88, 0x67, 0x4e, 0x8a, 0xd4, 0x40, - 0x78, 0x50, 0x97, 0x48, 0x10, 0x92, 0xeb, 0xb1, 0x41, 0x52, 0xee, 0xd2, 0xd9, 0x8b, 0x21, 0x10, - 0x26, 0xfe, 0x9c, 0x5e, 0xa3, 0x07, 0x02, 0xca, 0x90, 0xb0, 0x0f, 0x42, 0xe9, 0xb2, 0x20, 0x57, - 0x34, 0x42, 0xf9, 0x4f, 0xca, 0x5d, 0x22, 0xe1, 0x68, 0xb1, 0x4f, 0x07, 0x87, 0x7b, 0x9f, 0xf7, - 0x40, 0xd0, 0x06, 0x4f, 0x5c, 0x10, 0x39, 0xf3, 0xf8, 0xcb, 0x7f, 0x6c, 0x9b, 0x49, 0x3b, 0x38, - 0xbe, 0x38, 0xc9, 0x17, 0xe1, 0xbb, 0x80, 0xe7, 0xb5, 0xd5, 0xa1, 0x1f, 0x79, 0x50, 0x74, 0x59, - 0x4e, 0xd2, 0xbd, 0xfc, 0x87, 0x55, 0xa2, 0x56, 0xdb, 0x81, 0xa2, 0xc4, 0xa6, 0x03, 0x13, 0x26, - 0x15, 0xd2, 0x40, 0x68, 0x33, 0xc6, 0xe9, 0x00, 0x8a, 0x64, 0xb8, 0xf1, 0x6f, 0x89, 0xa0, 0xe3, - 0xb0, 0xa8, 0xcf, 0xcc, 0x06, 0x82, 0x73, 0xa9, 0xf0, 0x08, 0x6f, 0x00, 0xa2, 0x6f, 0x41, 0xb8, - 0x1c, 0xa4, 0x0d, 0x85, 0xa1, 0x83, 0xf0, 0x9c, 0x03, 0x36, 0x20, 0x7d, 0x36, 0x52, 0x0e, 0x40, - 0xa8, 0x9a, 0x99, 0x8a, 0x94, 0xb9, 0x63, 0x2d, 0x16, 0x80, 0x19, 0xfa, 0xde, 0x17, 0x6a, 0x2b, - 0x72, 0xa1, 0x08, 0x08, 0x5d, 0x9c, 0x24, 0x61, 0xf4, 0x88, 0x1a, 0x02, 0xd1, 0xc7, 0x8a, 0x06, - 0x7c, 0xa7, 0x06, 0xc5, 0x9d, 0x33, 0x0c, 0xa4, 0xca, 0xd5, 0x50, 0x66, 0x01, 0xfe, 0x11, 0x10, - 0x40, 0x21, 0x92, 0x20, 0x4c, 0xf4, 0x51, 0x01, 0x7c, 0x10, 0xc8, 0x60, 0xe8, 0x0c, 0xeb, 0x3b, - 0x8d, 0x06, 0x14, 0x38, 0x9e, 0x54, 0x41, 0x08, 0x3d, 0x7a, 0x17, 0x80, 0x10, 0xaf, 0x49, 0xa6, - 0x9e, 0x0d, 0xc9, 0x6e, 0x10, 0x94, 0xd8, 0xc3, 0x83, 0x8b, 0x13, 0x10, 0xd8, 0xc6, 0x0d, 0xc1, - 0x6c, 0x02, 0x79, 0x4a, 0xec, 0x13, 0x38, 0xec, 0x2d, 0xf3, 0x89, 0xb8, 0xcf, 0xd7, 0x85, 0x75, - 0x41, 0xfc, 0x5d, 0xde, 0xc6, 0x4e, 0x0b, 0xe0, 0x3f, 0x72, 0xb6, 0xa8, 0x59, 0x80, 0xc3, 0xdc, - 0x0e, 0x80, 0xd8, 0x0c, 0xc3, 0xc0, 0xa7, 0x21, 0x27, 0x20, 0x76, 0x2b, 0x94, 0xd8, 0x0e, 0x97, - 0xf5, 0x05, 0x05, 0x64, 0x7b, 0x0d, 0xb6, 0x6b, 0x4d, 0xa2, 0x3a, 0xad, 0xef, 0x30, 0x70, 0x97, - 0x07, 0x82, 0xe7, 0xf0, 0x9a, 0x2c, 0xbc, 0x83, 0xc2, 0xd8, 0x0f, 0x14, 0x08, 0x05, 0x30, 0xbc, - 0x0f, 0xa9, 0xb0, 0xe1, 0x1c, 0xac, 0x51, 0x88, 0x75, 0xcf, 0x8b, 0x40, 0x78, 0xf3, 0x24, 0x10, - 0x66, 0x4e, 0x2a, 0x22, 0x4e, 0x60, 0x9c, 0x2b, 0xe6, 0x7e, 0x71, 0x59, 0xbe, 0x2e, 0x87, 0x0b, - 0x00, 0x2d, 0x30, 0x78, 0xee, 0x04, 0xb4, 0x1e, 0x1c, 0x1f, 0xc0, 0x20, 0x87, 0x62, 0x74, 0x0d, - 0x24, 0x21, 0x64, 0x64, 0x73, 0x43, 0x32, 0xb7, 0x5c, 0x91, 0xbb, 0xff, 0xe6, 0x22, 0x1e, 0x76, - 0x52, 0x53, 0x13, 0x04, 0x22, 0x00, 0xe2, 0xf5, 0x9a, 0xc4, 0xd2, 0xb7, 0x5b, 0x20, 0x8e, 0x98, - 0x04, 0x11, 0xf3, 0xff, 0x8f, 0x07, 0x03, 0x63, 0x93, 0x7a, 0xe3, 0x34, 0x0c, 0x2f, 0x6e, 0x99, - 0xb2, 0x87, 0x40, 0x24, 0xec, 0x9e, 0x64, 0x67, 0x91, 0x02, 0xf2, 0xb0, 0x97, 0x0e, 0x08, 0xc5, - 0x45, 0x41, 0x1c, 0x2a, 0x2e, 0x61, 0xb8, 0x8a, 0xa4, 0xef, 0xc8, 0x83, 0x3b, 0x06, 0xc4, 0x12, - 0xb0, 0xbf, 0x5f, 0x06, 0x17, 0xf1, 0x3f, 0x70, 0xce, 0xff, 0x31, 0x07, 0x14, 0xf9, 0x32, 0xae, - 0x6f, 0x07, 0x85, 0x78, 0x15, 0x74, 0x10, 0x79, 0x44, 0x40, 0xf1, 0xcc, 0x4d, 0x32, 0x9b, 0x2f, - 0x83, 0xef, 0x94, 0x9f, 0x03, 0x49, 0x12, 0x96, 0x50, 0xb8, 0xed, 0xbb, 0x46, 0xbd, 0x09, 0x24, - 0x80, 0xde, 0x05, 0x92, 0x5c, 0x05, 0xe3, 0x54, 0xf9, 0x20, 0xb6, 0xa7, 0x4f, 0xec, 0x0b, 0x6a, - 0xef, 0x07, 0x5c, 0x89, 0xc0, 0xf3, 0xa8, 0x73, 0x7c, 0x04, 0x42, 0x87, 0x39, 0xfc, 0xef, 0x06, - 0xa4, 0x1c, 0xbb, 0x0b, 0x90, 0xa1, 0x7b, 0xb0, 0x18, 0x8d, 0x24, 0x39, 0xd0, 0x0e, 0x38, 0xa7, - 0x36, 0x8c, 0xa4, 0x56, 0xd7, 0x23, 0x9c, 0xc6, 0x9a, 0x17, 0x84, 0xc2, 0x95, 0xdb, 0xb9, 0xfb, - 0xa5, 0x2f, 0x84, 0xe3, 0x38, 0x3a, 0x38, 0x81, 0x81, 0xbe, 0x60, 0x44, 0xf9, 0xfb, 0x81, 0x4d, - 0xbe, 0x50, 0x21, 0x59, 0xc0, 0xeb, 0x70, 0xfc, 0xc9, 0x0d, 0xbf, 0x0f, 0x2a, 0x03, 0xe8, 0xe8, - 0x6f, 0x10, 0xa7, 0x0b, 0x86, 0x2f, 0x21, 0x0c, 0x24, 0xa0, 0xe2, 0x06, 0xc0, 0xaa, 0xf3, 0xdc, - 0x00, 0x71, 0xd4, 0xb2, 0x18, 0x15, 0x78, 0x94, 0xdc, 0x80, 0x70, 0x7f, 0x4a, 0x11, 0x02, 0xca, - 0x61, 0x2d, 0x50, 0xfa, 0x70, 0x31, 0x5c, 0xd2, 0x09, 0x88, 0x5c, 0xf6, 0xc1, 0xee, 0xee, 0x4e, - 0x13, 0x06, 0xca, 0x6a, 0xc2, 0x32, 0x11, 0x2e, 0xa8, 0xb8, 0x61, 0x30, 0xaa, 0x87, 0x24, 0x86, - 0xe3, 0x21, 0xb7, 0x61, 0xd4, 0x12, 0x0a, 0x03, 0xde, 0x01, 0xc5, 0x76, 0x36, 0xf7, 0xa5, 0x4f, - 0x6c, 0x07, 0x4e, 0x48, 0x44, 0x91, 0xba, 0xea, 0x8b, 0xa9, 0xe1, 0x78, 0x19, 0x41, 0x09, 0x91, - 0x4b, 0x43, 0xd0, 0xa1, 0x54, 0x4d, 0x1d, 0xb9, 0x45, 0x80, 0x94, 0xc3, 0x1a, 0xe5, 0x87, 0x7f, - 0x66, 0xf6, 0x25, 0x90, 0xcd, 0x7b, 0xd3, 0xec, 0xc0, 0xd1, 0x10, 0xa7, 0x30, 0x42, 0x10, 0xab, - 0x03, 0xc9, 0x61, 0x60, 0x85, 0x03, 0xcf, 0x66, 0x87, 0xdc, 0xe9, 0x81, 0x00, 0xb5, 0xe3, 0x66, - 0xbc, 0x97, 0x03, 0x38, 0xbe, 0x86, 0x3f, 0xb9, 0x0d, 0xcc, 0xdb, 0xe0, 0x35, 0xa0, 0x84, 0xd0, - 0xfb, 0x37, 0x1e, 0xa4, 0xca, 0xbe, 0x70, 0x30, 0x18, 0x93, 0x0e, 0x8c, 0x48, 0x44, 0x48, 0x81, - 0x68, 0xb2, 0x96, 0xb7, 0x1b, 0xfa, 0x42, 0xea, 0x4f, 0x1e, 0xfb, 0x30, 0x32, 0xd4, 0x9a, 0xdb, - 0x50, 0xf2, 0xc1, 0xf7, 0x39, 0x8c, 0x4a, 0xef, 0xa3, 0x08, 0xfa, 0x7d, 0x20, 0x49, 0x5f, 0x44, - 0xf9, 0xfd, 0x00, 0x46, 0xa5, 0xec, 0x49, 0xed, 0xbe, 0xb3, 0x0b, 0x30, 0x75, 0xbd, 0x43, 0x20, - 0x89, 0x54, 0xf6, 0xd3, 0x66, 0xaa, 0xe7, 0x6e, 0x0f, 0x08, 0x4f, 0x2b, 0x03, 0x57, 0xc5, 0x06, - 0xe3, 0x49, 0x10, 0x84, 0x7d, 0x20, 0x31, 0x95, 0x29, 0x81, 0x70, 0x04, 0x2a, 0xbf, 0x62, 0x6c, - 0x41, 0x1e, 0x7d, 0x3a, 0x80, 0x42, 0x8b, 0xc3, 0x28, 0x75, 0x42, 0x04, 0x81, 0x11, 0x9a, 0xd8, - 0xf6, 0x3d, 0x10, 0xf4, 0xb2, 0x20, 0x0e, 0x0b, 0x4e, 0xf7, 0xf6, 0x61, 0x55, 0x7c, 0xde, 0xf7, - 0x95, 0x84, 0x45, 0xdb, 0xde, 0xed, 0x74, 0x4e, 0x48, 0x28, 0x81, 0xc4, 0xab, 0x82, 0x80, 0x38, - 0xa1, 0xc3, 0x93, 0xc8, 0x8e, 0x58, 0x9d, 0xd5, 0x61, 0x00, 0x87, 0xb4, 0xe1, 0xe3, 0x47, 0x09, - 0x62, 0x2b, 0x44, 0x9e, 0x82, 0x21, 0x70, 0x09, 0x0c, 0xf7, 0xc2, 0xd8, 0x45, 0xd6, 0x00, 0x92, - 0x80, 0x37, 0x6c, 0x36, 0x9a, 0x9f, 0x88, 0xa2, 0xdf, 0x29, 0x0d, 0x61, 0xa4, 0x0c, 0x8b, 0x10, - 0x46, 0xa9, 0x67, 0x30, 0x0e, 0xbc, 0xa4, 0x19, 0xea, 0x79, 0x9e, 0x66, 0xa8, 0x0b, 0xca, 0x5c, - 0x89, 0x6d, 0x85, 0x21, 0x25, 0x0e, 0xa0, 0x02, 0x3d, 0x7d, 0x22, 0x99, 0x0d, 0xa5, 0xa8, 0x18, - 0x90, 0x34, 0xc7, 0xa1, 0x94, 0x0c, 0x88, 0xe2, 0x02, 0x92, 0x8d, 0x39, 0x49, 0x66, 0x3b, 0x62, - 0x7d, 0x38, 0xbd, 0x56, 0xa6, 0xcb, 0xd4, 0x43, 0xea, 0x13, 0x23, 0x59, 0x08, 0xc3, 0xf3, 0x38, - 0xd9, 0x15, 0x07, 0x4a, 0x00, 0xe2, 0x9b, 0x3d, 0x72, 0x0b, 0xa3, 0x0f, 0x2a, 0x90, 0xd6, 0x15, - 0xac, 0xef, 0x37, 0xb7, 0x6b, 0x21, 0x11, 0xb1, 0xd6, 0x85, 0x51, 0x6b, 0x52, 0xf8, 0x50, 0x2a, - 0x50, 0x03, 0x09, 0x07, 0x8f, 0x8d, 0x85, 0x9e, 0x08, 0xee, 0xee, 0x01, 0x89, 0xad, 0x56, 0x92, - 0x99, 0xfd, 0x11, 0x86, 0xdf, 0x61, 0xfc, 0xcc, 0x9d, 0x53, 0x20, 0x11, 0x13, 0xd4, 0x61, 0xe4, - 0x94, 0x30, 0x0f, 0x4e, 0x05, 0x5a, 0xc9, 0xee, 0x2e, 0x83, 0xa3, 0x20, 0x12, 0x90, 0x4a, 0x23, - 0x75, 0xfe, 0x3a, 0xdd, 0xfb, 0x0c, 0x23, 0x54, 0xad, 0x77, 0x0b, 0xa5, 0x58, 0x1e, 0x0b, 0x01, - 0x95, 0x1e, 0xb3, 0x03, 0x3f, 0x0c, 0x24, 0x83, 0x53, 0x3f, 0x59, 0xb2, 0xf0, 0x82, 0x0d, 0xe0, - 0x74, 0x2c, 0x80, 0x51, 0xde, 0x13, 0x48, 0x0c, 0xc5, 0x24, 0x37, 0x1b, 0x44, 0x82, 0x8b, 0x70, - 0xed, 0x7a, 0x0b, 0x46, 0xca, 0x50, 0x18, 0xf0, 0x7a, 0x1b, 0x44, 0xc2, 0x3b, 0xb1, 0x15, 0xf5, - 0x98, 0x3c, 0xa5, 0x8a, 0x9c, 0x9c, 0x9d, 0xc1, 0x38, 0x5d, 0x1e, 0x10, 0xda, 0x8b, 0x85, 0x21, - 0x03, 0xd5, 0xcb, 0x99, 0x28, 0x7f, 0xdc, 0xe0, 0x0e, 0x04, 0xa8, 0x75, 0x21, 0x95, 0x6a, 0x78, - 0x5e, 0x75, 0x04, 0x4e, 0xa8, 0x92, 0x90, 0x8d, 0x66, 0x03, 0x46, 0xf1, 0x06, 0x87, 0xc2, 0x48, - 0xbd, 0xa9, 0x83, 0xf0, 0x91, 0x53, 0x69, 0xc3, 0xa8, 0x4c, 0x1b, 0xcb, 0x2d, 0x40, 0xe9, 0x2c, - 0x9e, 0x0f, 0x23, 0xdb, 0x15, 0x86, 0x9a, 0x65, 0xd2, 0xe1, 0x20, 0x38, 0x23, 0x05, 0xc4, 0x2a, - 0x18, 0xc5, 0x4b, 0x7e, 0xbc, 0x80, 0xe2, 0x57, 0xea, 0x05, 0x8c, 0xab, 0xcb, 0x20, 0xf9, 0xe7, - 0x82, 0x0a, 0x06, 0x03, 0xbd, 0x0c, 0xa1, 0xb4, 0xd8, 0xb9, 0x6b, 0xb4, 0x87, 0x11, 0x57, 0x60, - 0x5a, 0xb8, 0x8f, 0xb9, 0xb8, 0x26, 0x71, 0x4e, 0x08, 0x08, 0x5e, 0x23, 0x84, 0x21, 0x16, 0x02, - 0xc5, 0xcf, 0x54, 0x04, 0x25, 0x84, 0x1a, 0x04, 0xc0, 0x0a, 0xc3, 0x10, 0x88, 0x04, 0x08, 0x61, - 0xe4, 0xaf, 0x39, 0x36, 0x0c, 0x77, 0x0c, 0x94, 0xfe, 0x3f, 0xae, 0x70, 0xeb, 0x9d, 0x53, 0x57, - 0xc0, 0xc9, 0x60, 0x1c, 0xf7, 0x5f, 0xae, 0x83, 0xe9, 0xbf, 0x2c, 0x7d, 0x47, 0x1e, 0xdb, 0x30, - 0xa0, 0xb6, 0xcd, 0x05, 0x90, 0x3c, 0x0a, 0x18, 0xc7, 0xcb, 0x0f, 0x41, 0x68, 0xfe, 0x7f, 0x60, - 0xa4, 0x75, 0x10, 0x79, 0xcf, 0x6d, 0x58, 0x95, 0xba, 0x4e, 0x7b, 0xc7, 0x40, 0x70, 0x4a, 0xd2, - 0xd4, 0xda, 0x63, 0xfc, 0x3b, 0x1c, 0x55, 0x30, 0xae, 0x1a, 0x72, 0x1c, 0xee, 0x39, 0x8e, 0xa0, - 0x30, 0x92, 0x3c, 0xec, 0xc0, 0x75, 0x29, 0x88, 0xd9, 0xb5, 0xa9, 0x84, 0x42, 0x10, 0x7c, 0xfc, - 0x6b, 0x2f, 0x6c, 0x9c, 0xc2, 0x48, 0x01, 0x94, 0xa2, 0x0f, 0xa4, 0xaa, 0x05, 0x08, 0xca, 0x2d, - 0x29, 0xdd, 0xf9, 0x07, 0x10, 0xe2, 0xcd, 0xf1, 0xe4, 0x2d, 0x94, 0x7e, 0xbb, 0x50, 0x6a, 0x05, - 0x31, 0xe9, 0xc0, 0xa8, 0x1f, 0xe7, 0xb0, 0x01, 0x53, 0xc4, 0xfb, 0x4b, 0x90, 0x30, 0xa4, 0x02, - 0x60, 0xe6, 0xcc, 0x74, 0x0a, 0x68, 0x03, 0x4c, 0xc5, 0x49, 0x79, 0xe9, 0xc0, 0x28, 0x78, 0x93, - 0x24, 0x54, 0x7d, 0xb9, 0x84, 0xa2, 0x73, 0x01, 0xc5, 0x11, 0x10, 0xe5, 0x8f, 0x5b, 0x6f, 0x81, - 0x0a, 0x24, 0x80, 0x95, 0x73, 0x4f, 0x94, 0x7f, 0x4e, 0x1c, 0x16, 0x80, 0xb0, 0xcf, 0x6c, 0x16, - 0x82, 0xe9, 0xc2, 0xe6, 0xda, 0x3b, 0xdb, 0xdb, 0x77, 0x30, 0xba, 0xab, 0x00, 0xea, 0x27, 0xdf, - 0x17, 0xcc, 0x19, 0x50, 0x38, 0x95, 0x0c, 0xfe, 0x52, 0x13, 0x91, 0x0b, 0xe6, 0x98, 0x11, 0xe5, - 0x1f, 0x45, 0x30, 0xda, 0x40, 0xf4, 0x99, 0x92, 0x50, 0x7c, 0x9f, 0xf5, 0xe6, 0x6e, 0x0b, 0x62, - 0x4a, 0x28, 0x2c, 0x7d, 0x96, 0xd6, 0xc2, 0x4a, 0x74, 0x31, 0x8c, 0x8a, 0x89, 0x30, 0x3a, 0x70, - 0x0d, 0xa1, 0xb4, 0x5c, 0x01, 0x62, 0x01, 0x4f, 0x55, 0xba, 0xe9, 0x89, 0xc0, 0x65, 0x30, 0x76, - 0xeb, 0xb8, 0xf7, 0x0a, 0x20, 0xfb, 0x37, 0xa9, 0xce, 0x71, 0x0c, 0xa3, 0x3a, 0xc7, 0x3f, 0x8d, - 0xdd, 0x66, 0x1d, 0x86, 0x87, 0x8c, 0x0e, 0x60, 0xf5, 0xdf, 0xb9, 0x61, 0x36, 0x3b, 0x1b, 0x6d, - 0xde, 0xc3, 0x9c, 0x29, 0xe3, 0x99, 0xae, 0xb8, 0x7e, 0xa7, 0x77, 0xdc, 0x39, 0xa7, 0xac, 0x42, - 0xef, 0x94, 0x20, 0xd5, 0x88, 0x4b, 0x95, 0x28, 0xc0, 0x6e, 0x86, 0x89, 0xab, 0x08, 0xea, 0x52, - 0x41, 0xb9, 0x1d, 0x5f, 0xf6, 0xf5, 0x9d, 0xd9, 0xd5, 0x49, 0x57, 0xe6, 0xfc, 0x68, 0xdf, 0x6a, - 0xec, 0x74, 0x9a, 0x5d, 0xeb, 0x72, 0x48, 0xad, 0x34, 0x2f, 0x43, 0x5a, 0x49, 0x64, 0x9b, 0x75, - 0x7a, 0xfc, 0xd1, 0xaa, 0x5a, 0xcc, 0x4d, 0xb2, 0x22, 0xb3, 0x6f, 0x9b, 0xca, 0x45, 0x10, 0x09, - 0x3b, 0xdb, 0x3c, 0x3c, 0xb9, 0xfe, 0xbf, 0xf4, 0xfe, 0x36, 0x10, 0xce, 0xa8, 0xb3, 0xf6, 0x64, - 0x7a, 0xde, 0xe7, 0x1b, 0xeb, 0x0f, 0x22, 0xf7, 0xc4, 0x20, 0xf2, 0x29, 0x57, 0x95, 0xae, 0xa5, - 0x44, 0x44, 0x73, 0x0e, 0x34, 0x35, 0x4a, 0xa6, 0xf9, 0x33, 0xbc, 0xe7, 0xe7, 0xff, 0xf6, 0x7c, - 0xa7, 0xe3, 0xed, 0xf1, 0x7e, 0xfd, 0x8d, 0x37, 0xce, 0x4c, 0x65, 0x8f, 0xf3, 0x40, 0x11, 0xc5, - 0x02, 0x3e, 0xd7, 0xfe, 0xa8, 0x48, 0x7b, 0x48, 0x7d, 0x12, 0x12, 0x35, 0x8c, 0x27, 0xfe, 0x43, - 0x10, 0x52, 0x6e, 0x07, 0xdc, 0x65, 0x83, 0x2a, 0x4b, 0xa7, 0xfd, 0xc3, 0x4b, 0x1f, 0x3f, 0x48, - 0x45, 0xd4, 0x1b, 0xd3, 0xff, 0xfa, 0xab, 0xfc, 0xe2, 0x35, 0x2a, 0x32, 0xea, 0x3f, 0xde, 0xf0, - 0xcd, 0xb7, 0x78, 0x44, 0x73, 0x4f, 0x2e, 0x7b, 0x63, 0x9a, 0xfe, 0xcb, 0x78, 0xbc, 0xff, 0xeb, - 0x6f, 0x7c, 0x6d, 0x3f, 0x99, 0x8a, 0x4a, 0xd7, 0xaa, 0xbd, 0xf1, 0xc5, 0x9e, 0xa0, 0x2e, 0xbb, - 0x9b, 0x6f, 0xca, 0x53, 0xdc, 0x61, 0x57, 0x99, 0x3b, 0xc7, 0xb9, 0xcb, 0x7a, 0xde, 0xa7, 0xcf, - 0x77, 0x38, 0x7a, 0xae, 0x39, 0x05, 0x6d, 0xde, 0xc3, 0xfc, 0xe4, 0xf0, 0x8e, 0x5e, 0xcb, 0xf0, - 0x36, 0x3f, 0x60, 0x62, 0xce, 0xfd, 0x3d, 0xb5, 0x2b, 0xe6, 0x9f, 0xc1, 0x97, 0xf6, 0xd4, 0xbc, - 0x93, 0xf8, 0xff, 0xb1, 0xf7, 0xb6, 0xbd, 0x89, 0x63, 0x4b, 0xbb, 0xf0, 0xf7, 0xfe, 0x15, 0x16, - 0xd2, 0xe8, 0x86, 0x9e, 0x98, 0x00, 0x21, 0x24, 0x41, 0xda, 0x6a, 0x65, 0xa6, 0x7b, 0xe6, 0x89, - 0x9e, 0xce, 0x4c, 0x94, 0x9e, 0xdd, 0x3a, 0xfb, 0x04, 0x76, 0xcb, 0x8d, 0x17, 0x89, 0x35, 0x8e, - 0xcd, 0x6d, 0x9b, 0xec, 0xce, 0xee, 0xce, 0x7f, 0x3f, 0xb2, 0x31, 0xe6, 0x35, 0x09, 0xb6, 0xab, - 0xca, 0x06, 0xae, 0x7c, 0x48, 0x80, 0xc0, 0x5a, 0xc6, 0x6b, 0xd5, 0xcb, 0x75, 0x55, 0xad, 0xaa, - 0xcd, 0xb6, 0x56, 0xea, 0x2d, 0x96, 0x65, 0xab, 0x65, 0xde, 0x72, 0x79, 0x4d, 0x4d, 0xe6, 0x2d, - 0x48, 0x66, 0x57, 0xb2, 0x6c, 0x49, 0x1e, 0xef, 0x65, 0xd3, 0xad, 0x9a, 0x7c, 0x60, 0x30, 0xdd, - 0x11, 0x29, 0xef, 0xf9, 0x2c, 0xb1, 0x23, 0xfa, 0x7c, 0xca, 0xfb, 0x95, 0x6e, 0xdb, 0x66, 0xde, - 0xbe, 0x79, 0xb6, 0x71, 0xee, 0xed, 0xcc, 0xe1, 0x41, 0x65, 0xda, 0xde, 0xbc, 0xee, 0x53, 0xca, - 0xed, 0x9e, 0xd1, 0x31, 0x4a, 0xb9, 0xde, 0x69, 0xc5, 0x20, 0xf9, 0xa0, 0xa9, 0xfc, 0x81, 0x67, - 0x8d, 0x36, 0x76, 0x69, 0x5e, 0xdc, 0x31, 0xf3, 0x83, 0x65, 0xbc, 0xd3, 0xb1, 0xa0, 0x34, 0x32, - 0x7e, 0x3c, 0xab, 0xc0, 0x50, 0x08, 0x0e, 0x99, 0x00, 0x51, 0x09, 0x12, 0xb9, 0x40, 0x91, 0x0b, - 0x16, 0xa5, 0x80, 0x65, 0x13, 0xb4, 0x1c, 0x04, 0x43, 0x74, 0xe1, 0x11, 0x4a, 0x22, 0xd9, 0x2d, - 0x7e, 0xe0, 0x59, 0xce, 0x6d, 0x9e, 0xed, 0x32, 0x35, 0x32, 0xa7, 0xa2, 0x77, 0x20, 0x07, 0x7f, - 0x40, 0xc8, 0x27, 0xd0, 0xb0, 0x3f, 0x79, 0xf8, 0x86, 0x73, 0xdb, 0x32, 0xfc, 0x9c, 0x82, 0x45, - 0x29, 0xf5, 0x1c, 0x84, 0x04, 0xbb, 0x22, 0xc8, 0x43, 0x58, 0x4c, 0x16, 0x20, 0xf7, 0xf4, 0x4f, - 0x6f, 0x8a, 0xf9, 0x74, 0x5f, 0x54, 0x6a, 0x53, 0x32, 0x19, 0xcf, 0x8e, 0xf3, 0x78, 0xeb, 0x06, - 0xba, 0x3b, 0xd0, 0x07, 0xee, 0xfd, 0xc8, 0x53, 0xbe, 0xaf, 0x4c, 0xdd, 0x56, 0xc6, 0x30, 0x1c, - 0x34, 0xa3, 0x22, 0x96, 0xe0, 0x86, 0x2b, 0xca, 0x09, 0x95, 0x95, 0x99, 0xdf, 0xe5, 0x99, 0x0e, - 0x94, 0x71, 0x19, 0xde, 0xab, 0xa1, 0x31, 0xb6, 0x83, 0x5c, 0xea, 0xae, 0x12, 0x8a, 0x5d, 0xb6, - 0x7d, 0xdf, 0x87, 0x97, 0x06, 0x2f, 0x0d, 0x5e, 0x5a, 0x8a, 0xdd, 0xf2, 0xd5, 0x75, 0x6d, 0x65, - 0x38, 0x14, 0x6e, 0x5a, 0x13, 0x6e, 0x5a, 0x11, 0x6e, 0x9a, 0x79, 0x6f, 0x39, 0x9f, 0x02, 0x23, - 0x18, 0xc3, 0x59, 0x2b, 0xd2, 0x59, 0x9b, 0x5b, 0x06, 0xb8, 0x6c, 0x70, 0xd9, 0x5e, 0xbf, 0x6c, - 0xcb, 0x31, 0xd5, 0xb7, 0xfc, 0x0e, 0xdb, 0x64, 0x98, 0x22, 0xdd, 0xb5, 0x06, 0x7c, 0x35, 0xf8, - 0x6a, 0xf0, 0xd5, 0xf8, 0x7d, 0xb5, 0xb1, 0xe5, 0x04, 0x47, 0x2d, 0x02, 0x57, 0xed, 0x24, 0xc7, - 0x10, 0xd7, 0x86, 0x73, 0x5b, 0x0a, 0x3f, 0xe9, 0xd2, 0x72, 0xe8, 0xdc, 0x94, 0xcf, 0x86, 0x3d, - 0x56, 0xd9, 0x95, 0xc2, 0xca, 0x78, 0xbf, 0x79, 0xc6, 0x20, 0xb4, 0x6c, 0xef, 0xad, 0x5b, 0x2b, - 0xf0, 0x09, 0x07, 0xfe, 0x43, 0xdd, 0x1a, 0x81, 0xf5, 0x10, 0x5e, 0xeb, 0xd0, 0xb0, 0x7d, 0x95, - 0xdf, 0xd7, 0x20, 0x70, 0x1a, 0x2f, 0x8d, 0x6f, 0xf4, 0x4b, 0xd1, 0x6e, 0x9d, 0xb5, 0xcf, 0x3a, - 0x27, 0xad, 0xb3, 0xe3, 0xfd, 0x5b, 0x13, 0xf8, 0x7f, 0xbb, 0xef, 0xff, 0x39, 0x13, 0xad, 0x9e, - 0xd3, 0xfd, 0x8b, 0x46, 0x81, 0x27, 0x05, 0x4f, 0x0a, 0x9e, 0x54, 0x8a, 0xdd, 0x82, 0xd8, 0x64, - 0x89, 0x49, 0xaf, 0x93, 0x56, 0xeb, 0xa8, 0xab, 0x9d, 0x6b, 0xff, 0x3a, 0xff, 0xe3, 0x77, 0xed, - 0xbd, 0x11, 0x18, 0xda, 0xa5, 0x6b, 0x2a, 0x5b, 0x1b, 0xba, 0xde, 0x8c, 0x7f, 0xd1, 0x2e, 0x0d, - 0xc7, 0xb8, 0x55, 0xd1, 0x3e, 0x06, 0xed, 0xc5, 0x43, 0x7b, 0xa5, 0x5e, 0x08, 0x38, 0x3e, 0x7b, - 0xe7, 0xf8, 0xb0, 0x66, 0x81, 0xe5, 0xbc, 0x51, 0x79, 0xd2, 0xd5, 0xe7, 0xd3, 0xc3, 0x17, 0x9e, - 0x1d, 0xc6, 0x09, 0x93, 0x4c, 0xe7, 0x02, 0x52, 0xdc, 0xa2, 0x8c, 0x0c, 0x62, 0x2e, 0xe6, 0x30, - 0xa3, 0xcf, 0x88, 0xc4, 0x4f, 0x24, 0x7e, 0x32, 0xfb, 0x78, 0xb3, 0x22, 0x50, 0xca, 0x18, 0x7a, - 0x2a, 0xd3, 0x7a, 0x4f, 0x9d, 0xba, 0x0c, 0xfc, 0x58, 0xe5, 0x2a, 0xd6, 0x32, 0xf5, 0x7a, 0xac, - 0x21, 0x0e, 0x27, 0xf2, 0x55, 0x06, 0x3d, 0x31, 0x7a, 0x68, 0xe7, 0x50, 0x13, 0xe1, 0xa7, 0xf7, - 0x24, 0x3d, 0x7c, 0x04, 0x2d, 0xb1, 0x4e, 0x4b, 0x8c, 0x76, 0x26, 0x3d, 0xdc, 0x98, 0x54, 0xdc, - 0xdc, 0xe0, 0xa4, 0xd8, 0xab, 0xfb, 0x65, 0x36, 0x54, 0x3e, 0xfa, 0xa5, 0xb9, 0x2b, 0xf4, 0xcb, - 0x08, 0xf4, 0x8b, 0x90, 0x70, 0x15, 0x43, 0xbf, 0x64, 0x15, 0xba, 0x65, 0xe1, 0xcb, 0xbf, 0xc8, - 0x4b, 0x22, 0x98, 0x77, 0x89, 0xf3, 0x09, 0x22, 0x99, 0x40, 0x52, 0x0a, 0x26, 0xb9, 0x80, 0x4a, - 0x30, 0x25, 0x24, 0x02, 0x2b, 0x4b, 0x93, 0xe4, 0x14, 0x60, 0x22, 0xde, 0x23, 0xe7, 0x7e, 0xcb, - 0x2b, 0xd8, 0xc9, 0x40, 0x19, 0xcf, 0x22, 0xbe, 0xba, 0x79, 0x33, 0x9d, 0x51, 0x64, 0x16, 0x77, - 0x72, 0xb1, 0xe7, 0x10, 0x7f, 0x36, 0x35, 0xc0, 0xa5, 0x0e, 0xd8, 0xd5, 0x02, 0xbb, 0x7a, 0xe0, - 0x54, 0x13, 0x34, 0xea, 0x82, 0x48, 0x6d, 0x90, 0xab, 0x8f, 0x39, 0xbc, 0x4a, 0xbf, 0x9f, 0x66, - 0x68, 0x96, 0x7a, 0x23, 0xe5, 0x8b, 0xa2, 0x8a, 0xa9, 0x15, 0x4e, 0xf5, 0xc2, 0xae, 0x66, 0xb8, - 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x56, 0x1d, 0x11, 0xab, 0xa5, 0xfc, - 0x8c, 0x62, 0x2a, 0x86, 0x4c, 0x8f, 0xb1, 0x88, 0xee, 0xb8, 0xfa, 0x7f, 0x5d, 0x47, 0x71, 0x6c, - 0xfe, 0x24, 0xe6, 0xcc, 0x30, 0xf6, 0x95, 0x11, 0x04, 0xca, 0x73, 0x72, 0xc7, 0x82, 0x9f, 0x9d, - 0xa0, 0x5a, 0xbd, 0x69, 0xe8, 0x67, 0xfd, 0x1f, 0x37, 0x4d, 0xfd, 0xac, 0x3f, 0x79, 0xd8, 0x8c, - 0xfe, 0x4c, 0x1e, 0xb7, 0x6e, 0x1a, 0x7a, 0x7b, 0xfa, 0xf8, 0xf8, 0xa6, 0xa1, 0x1f, 0xf7, 0x6b, - 0xbd, 0x5e, 0xbd, 0xf6, 0xfd, 0xe8, 0x29, 0xfd, 0x07, 0xab, 0x3f, 0xdd, 0xf4, 0x7a, 0xa3, 0xef, - 0x7f, 0x3c, 0x85, 0xbf, 0x3f, 0x3e, 0xf5, 0x7f, 0xae, 0xbd, 0xe3, 0x92, 0xe3, 0x70, 0xe2, 0x5e, - 0xaf, 0xde, 0x7f, 0x4b, 0x2f, 0x56, 0xfd, 0x52, 0x8b, 0x15, 0x51, 0x10, 0xf3, 0xd9, 0xf1, 0xc9, - 0x83, 0x9b, 0xfc, 0xda, 0x8b, 0xf0, 0x16, 0xc7, 0xd6, 0x47, 0xb7, 0x95, 0x73, 0x1b, 0xc5, 0x15, - 0x98, 0xdc, 0xa1, 0xc5, 0x69, 0xe0, 0x19, 0xc1, 0x33, 0x82, 0x67, 0x04, 0xcf, 0x88, 0x6c, 0xb7, - 0x8f, 0x2d, 0x27, 0x38, 0x65, 0x74, 0x85, 0x8e, 0x19, 0x86, 0xa6, 0x39, 0xe0, 0xf0, 0xdc, 0x0f, - 0x8f, 0x74, 0x6a, 0xd4, 0x07, 0x22, 0x9e, 0x9d, 0x84, 0xf8, 0xa0, 0xc4, 0xb3, 0xf3, 0x70, 0x25, - 0xeb, 0x3f, 0xbf, 0x65, 0xa9, 0x93, 0xf8, 0x85, 0xa4, 0x78, 0x71, 0x0b, 0x18, 0xdf, 0xe4, 0xb6, - 0xc0, 0x51, 0x0b, 0x7b, 0xa0, 0x14, 0x76, 0x81, 0x6f, 0x54, 0x40, 0x90, 0x6d, 0x83, 0x20, 0xa5, - 0x62, 0x86, 0x99, 0x16, 0x88, 0x27, 0xaf, 0xd3, 0x1a, 0x3d, 0xb4, 0x0f, 0x93, 0xa4, 0x8e, 0xe9, - 0xa3, 0x4c, 0xe9, 0x9e, 0x7c, 0xab, 0x43, 0x71, 0x5a, 0x8f, 0x90, 0x5e, 0xa7, 0xa7, 0xd5, 0x89, - 0x41, 0x23, 0xa2, 0x73, 0x88, 0xce, 0x49, 0x83, 0xbf, 0x72, 0xe9, 0x60, 0x72, 0x90, 0x47, 0x90, - 0x68, 0xfb, 0x9a, 0xf0, 0x37, 0x4f, 0x08, 0xc7, 0x9c, 0x4b, 0xcc, 0x8d, 0x16, 0xba, 0x1b, 0xa7, - 0xe7, 0x4e, 0x9e, 0x50, 0x2d, 0x7c, 0x39, 0x54, 0xfb, 0xa4, 0xca, 0x3e, 0xb9, 0x76, 0x9f, 0x0c, - 0x5b, 0xf2, 0xf4, 0x8b, 0x16, 0x14, 0x3c, 0x14, 0xfc, 0x1e, 0x2a, 0x78, 0xa4, 0x5f, 0x20, 0xc8, - 0xc0, 0xac, 0x66, 0xb8, 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x87, 0xf6, - 0x41, 0xfa, 0xc5, 0x6b, 0x8e, 0x0b, 0xd2, 0x2f, 0x90, 0x7e, 0x51, 0x24, 0xc5, 0x47, 0xe8, 0x3e, - 0xba, 0x9e, 0x75, 0xcb, 0x10, 0x35, 0x9a, 0x19, 0xa2, 0xc9, 0xf8, 0x30, 0xf9, 0x30, 0xf9, 0x30, - 0xf9, 0x30, 0xf9, 0x84, 0x26, 0x3f, 0x31, 0xf8, 0x2c, 0x2a, 0x66, 0xc1, 0xde, 0xb7, 0x19, 0xc6, - 0xfe, 0xe0, 0x8c, 0xef, 0x91, 0xca, 0x46, 0xba, 0x27, 0x90, 0xca, 0x06, 0x93, 0x03, 0x93, 0x03, - 0x93, 0xc3, 0xb4, 0xdb, 0x91, 0xca, 0xb6, 0xfc, 0x83, 0x54, 0xb6, 0xcd, 0xe6, 0x41, 0x2a, 0x5b, - 0xa6, 0x2d, 0x80, 0x54, 0xb6, 0xed, 0xd8, 0x03, 0xfb, 0x99, 0xca, 0x86, 0x8c, 0xad, 0x54, 0xe3, - 0x4a, 0x66, 0x6c, 0x6d, 0xd0, 0x6a, 0x5e, 0x6e, 0x71, 0x28, 0xa2, 0xfa, 0x0f, 0x9e, 0xc7, 0x90, - 0xb2, 0x15, 0x8d, 0x8a, 0x92, 0x0a, 0xa5, 0x83, 0x41, 0x88, 0xe9, 0x17, 0x01, 0x73, 0x76, 0x3c, - 0xa6, 0x1f, 0x0a, 0xbb, 0x7e, 0xeb, 0xb9, 0x63, 0xc6, 0xd8, 0xfe, 0xdc, 0x1c, 0x3c, 0xec, 0x4b, - 0x13, 0xec, 0x0b, 0xd8, 0x17, 0xb0, 0x2f, 0xe5, 0x63, 0x5f, 0xa8, 0xd5, 0x55, 0x32, 0x30, 0x71, - 0x41, 0xa9, 0x67, 0x85, 0x89, 0xb4, 0xc0, 0x94, 0x90, 0xfa, 0x62, 0x57, 0x63, 0x12, 0xea, 0x4c, - 0x4c, 0xad, 0x49, 0xa9, 0x37, 0x71, 0x35, 0x27, 0xae, 0xee, 0x24, 0xd5, 0x1e, 0x33, 0xc9, 0xc0, - 0x24, 0x2f, 0x5c, 0xea, 0x30, 0x99, 0xc0, 0x18, 0x0c, 0xd4, 0x28, 0xd0, 0xef, 0x5d, 0x53, 0x60, - 0x23, 0x27, 0xc5, 0x36, 0xe7, 0x26, 0x65, 0xde, 0x59, 0x14, 0x6d, 0x29, 0x37, 0x9e, 0x2c, 0xa2, - 0xc7, 0x2a, 0xac, 0xf3, 0xf4, 0x99, 0xef, 0x17, 0x4f, 0x74, 0x52, 0xdc, 0xd0, 0x48, 0x1a, 0x1c, - 0x71, 0xc3, 0x23, 0x6d, 0x80, 0x0a, 0x33, 0x44, 0x85, 0x19, 0xa4, 0x22, 0x0c, 0x13, 0xaf, 0x81, - 0x62, 0x36, 0x54, 0xc9, 0x0d, 0x63, 0x8b, 0x9e, 0x3e, 0x2b, 0x6d, 0xf9, 0xdb, 0xce, 0xa7, 0xf6, - 0xbe, 0x9b, 0x5b, 0xbd, 0x44, 0xcc, 0x67, 0xdd, 0x57, 0xe6, 0x13, 0x3b, 0xfb, 0x2e, 0x27, 0x49, - 0x9c, 0xd1, 0x4a, 0xc3, 0x7c, 0x50, 0x5e, 0x60, 0xf9, 0x51, 0x1f, 0xac, 0x49, 0x4c, 0xe3, 0xc1, - 0xb0, 0x05, 0x9d, 0xb3, 0xf5, 0xf3, 0xef, 0x92, 0x9f, 0xd6, 0x6c, 0x34, 0xe0, 0xa5, 0xc1, 0x4b, - 0x83, 0x97, 0x06, 0x2f, 0x0d, 0x5e, 0x9a, 0x8c, 0xb4, 0x8d, 0x2d, 0x27, 0x68, 0x76, 0x04, 0x9d, - 0xb4, 0x8e, 0xc0, 0x54, 0xbc, 0x49, 0x71, 0xcb, 0x3f, 0x32, 0xea, 0x43, 0x93, 0x4a, 0x9a, 0x5b, - 0x99, 0x74, 0x9a, 0x41, 0xd5, 0x3c, 0x90, 0x9d, 0x57, 0x3a, 0xa1, 0x6a, 0x55, 0x46, 0xa4, 0x12, - 0xac, 0x84, 0xd5, 0xcc, 0xe2, 0x96, 0x32, 0xbe, 0x15, 0xb7, 0xa5, 0xda, 0x8d, 0xb3, 0x63, 0xec, - 0x2a, 0xa9, 0x5d, 0xf5, 0x66, 0x37, 0x66, 0xe9, 0x03, 0xe5, 0x03, 0xe5, 0x73, 0xdd, 0xae, 0x91, - 0xa7, 0xd4, 0xfd, 0x28, 0x90, 0x83, 0xf5, 0xd3, 0x09, 0x77, 0x09, 0xc7, 0x87, 0x10, 0x03, 0x40, - 0x1e, 0x40, 0x1e, 0x40, 0x1e, 0x40, 0x1e, 0x40, 0x5e, 0x46, 0xda, 0x10, 0x6e, 0x81, 0x23, 0xb6, - 0x83, 0x8e, 0x98, 0x6e, 0x2a, 0xdb, 0x78, 0x14, 0x77, 0xc7, 0xe2, 0x69, 0x77, 0xc9, 0x29, 0x43, - 0x68, 0x05, 0x1e, 0x19, 0x3c, 0x32, 0x78, 0x64, 0xf0, 0xc8, 0x84, 0xa4, 0x0d, 0xa1, 0x95, 0xdc, - 0x3f, 0xfb, 0x12, 0x5a, 0x69, 0x80, 0x04, 0x17, 0xfa, 0xd9, 0x9b, 0xd0, 0xca, 0x51, 0xa7, 0x81, - 0x5d, 0x25, 0xb6, 0xab, 0x10, 0x5a, 0x01, 0xa2, 0x07, 0xa2, 0x7f, 0x0d, 0xd1, 0x5b, 0xae, 0x67, - 0x05, 0xa2, 0x60, 0x3e, 0x9e, 0x11, 0x49, 0x92, 0x40, 0xf2, 0x40, 0xf2, 0x40, 0xf2, 0x40, 0xf2, - 0x40, 0xf2, 0x19, 0x91, 0xfc, 0xa9, 0x20, 0x90, 0x3f, 0x06, 0x90, 0xdf, 0x52, 0x20, 0x8f, 0x1c, - 0x49, 0x00, 0x79, 0xe2, 0x2d, 0xd5, 0x3a, 0x6e, 0x63, 0x53, 0x01, 0xc7, 0x03, 0xc7, 0x03, 0xc7, - 0x97, 0x03, 0xc7, 0x3f, 0x58, 0x5e, 0x30, 0x36, 0xec, 0x69, 0x79, 0x7e, 0x39, 0x38, 0xbf, 0x3c, - 0x31, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0xea, 0x4a, 0xcf, 0x14, 0xc9, 0x34, - 0xc0, 0x33, 0x81, 0xb9, 0xe2, 0x7b, 0xb9, 0x73, 0x60, 0x75, 0x5d, 0x83, 0xbb, 0x8a, 0x20, 0xb2, - 0x61, 0x6c, 0x78, 0xf7, 0xbc, 0x1d, 0x62, 0x6e, 0x84, 0xf7, 0xec, 0xc4, 0x45, 0x37, 0xc8, 0x13, - 0xfb, 0xb6, 0xfd, 0x37, 0x3b, 0x84, 0xc0, 0x8b, 0x91, 0xc6, 0x0e, 0xa4, 0x91, 0x5d, 0x1a, 0xbb, - 0x3f, 0x42, 0x99, 0x31, 0xf4, 0xe1, 0xb9, 0xfe, 0x5b, 0xff, 0x7b, 0xe3, 0xa0, 0xfd, 0x54, 0xeb, - 0xd6, 0xaa, 0xcb, 0xaf, 0x75, 0x6b, 0xdf, 0x1b, 0x07, 0xc7, 0x4f, 0xd5, 0xea, 0x9a, 0xff, 0xbc, - 0x5b, 0x37, 0x46, 0xed, 0x47, 0xb5, 0x5a, 0x8d, 0xe5, 0x70, 0x41, 0x36, 0x6f, 0x1a, 0xcd, 0xfe, - 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0x22, 0xdd, 0x1b, 0xbd, 0xb9, 0x26, 0xd8, 0xf4, 0xf2, 0x25, 0x15, - 0xf6, 0xef, 0x6e, 0xff, 0xe7, 0x6e, 0xed, 0x7b, 0xe7, 0x69, 0xfa, 0x38, 0xfa, 0x5d, 0xfb, 0x51, - 0xad, 0xbf, 0xed, 0xf5, 0xea, 0xf5, 0xb7, 0xb5, 0xc9, 0x0d, 0x88, 0xdf, 0xf7, 0x76, 0xf2, 0xdf, - 0x77, 0xdd, 0xee, 0xca, 0x4b, 0xb5, 0xea, 0x4f, 0xf5, 0x5d, 0x54, 0x4b, 0x60, 0x57, 0x5e, 0xdc, - 0x42, 0x1f, 0x2d, 0x3f, 0x38, 0x0f, 0x02, 0x4f, 0xc6, 0x35, 0xbd, 0xb4, 0x9c, 0x0f, 0x76, 0x54, - 0xb2, 0x48, 0x88, 0x48, 0xac, 0x5c, 0x1a, 0xdf, 0xe6, 0x66, 0x6c, 0x9e, 0xb6, 0xdb, 0x9d, 0x93, - 0x76, 0xbb, 0x71, 0x72, 0x74, 0xd2, 0x38, 0x3b, 0x3e, 0x6e, 0x76, 0x9a, 0x12, 0xd1, 0x95, 0x3f, - 0x3d, 0x53, 0x79, 0xca, 0xfc, 0xe5, 0xb1, 0xd2, 0xd5, 0x9c, 0xb1, 0x6d, 0x83, 0x8f, 0x03, 0x1f, - 0xc7, 0xcd, 0xc7, 0x79, 0xee, 0x38, 0x50, 0x9e, 0x6e, 0x99, 0xf2, 0x8c, 0xdc, 0x6c, 0x6a, 0x70, - 0x72, 0xe0, 0xe4, 0xc0, 0xc9, 0x81, 0x93, 0x03, 0x27, 0x87, 0xdc, 0x91, 0xed, 0x23, 0x00, 0x90, - 0x3b, 0x22, 0x79, 0x01, 0xc8, 0x1d, 0xe1, 0xde, 0x52, 0xad, 0x63, 0x94, 0xd7, 0x12, 0xdb, 0x54, - 0x60, 0x37, 0x80, 0x55, 0x77, 0x02, 0xab, 0x6e, 0x55, 0x27, 0x16, 0xa1, 0x05, 0x17, 0x6d, 0x6f, - 0xfa, 0xe0, 0x79, 0xa3, 0xc3, 0x59, 0xaf, 0xbd, 0xc3, 0xb8, 0x77, 0xd5, 0x96, 0xb4, 0xe1, 0x65, - 0x58, 0xe9, 0x4a, 0x72, 0xcb, 0xf4, 0xc0, 0x33, 0x06, 0x7f, 0x5b, 0x8e, 0x40, 0xc7, 0xb0, 0x35, - 0x73, 0xa2, 0x7b, 0x58, 0x51, 0x2c, 0x06, 0xba, 0x87, 0x6d, 0x1d, 0x4b, 0x81, 0xee, 0x61, 0xcf, - 0xdd, 0x18, 0xf6, 0xee, 0x61, 0xcc, 0x4d, 0x15, 0x57, 0x84, 0x92, 0xb5, 0xb9, 0xa2, 0x90, 0x9a, - 0x14, 0x53, 0x97, 0x92, 0x6a, 0x53, 0x5c, 0x7d, 0x4a, 0xab, 0xd1, 0xc2, 0xd4, 0x69, 0x61, 0x6a, - 0xb5, 0x08, 0xf5, 0x2a, 0x83, 0x3e, 0xb9, 0xb1, 0x21, 0xb7, 0xda, 0x4d, 0x26, 0x9a, 0x9e, 0x3b, - 0xd7, 0x4d, 0x35, 0xf0, 0x54, 0xbc, 0x46, 0x42, 0x72, 0xb0, 0x7c, 0xf6, 0x7d, 0xee, 0x1a, 0x84, - 0xf6, 0xa5, 0xe4, 0x69, 0xf8, 0x64, 0xd2, 0x86, 0x4c, 0x1a, 0x4b, 0x5f, 0xe8, 0x1e, 0xca, 0xc4, - 0x39, 0xc5, 0x4d, 0x5e, 0x11, 0xa6, 0xaf, 0x30, 0x13, 0x58, 0x94, 0x29, 0x2c, 0xdc, 0x24, 0x16, - 0x6e, 0x1a, 0x8b, 0x34, 0x91, 0x32, 0xa6, 0x52, 0xc8, 0x64, 0x26, 0x37, 0x52, 0x2c, 0x6e, 0xba, - 0x22, 0xad, 0x52, 0xf1, 0xd3, 0x65, 0xd5, 0x2b, 0x18, 0x38, 0x11, 0x8e, 0xa7, 0x4e, 0x7f, 0x64, - 0xb5, 0x91, 0x56, 0x54, 0x7c, 0x35, 0x99, 0xbc, 0xa0, 0x62, 0x7b, 0xc9, 0xfc, 0x45, 0x87, 0xc6, - 0x66, 0xa2, 0x55, 0x54, 0x88, 0x4c, 0x58, 0x6b, 0x2d, 0x6e, 0xbd, 0x02, 0xe2, 0xb0, 0x2b, 0x5b, - 0x4f, 0xfc, 0x2c, 0x3f, 0x36, 0x5f, 0x41, 0x86, 0x59, 0x7e, 0xb6, 0x9d, 0x3a, 0xf4, 0x23, 0x1d, - 0xc7, 0x4d, 0xe6, 0x2d, 0x2c, 0x9e, 0x2b, 0xb7, 0x61, 0x04, 0x96, 0xb0, 0x12, 0x45, 0xcc, 0x66, - 0x91, 0x51, 0x79, 0xfa, 0x63, 0xf9, 0x02, 0x80, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, - 0xdb, 0x85, 0xa4, 0x35, 0xb4, 0x9a, 0x9e, 0x1a, 0x16, 0x71, 0x7c, 0xf6, 0x44, 0xf6, 0xf8, 0x6c, - 0x9c, 0x10, 0x34, 0xd0, 0xad, 0x61, 0x77, 0x2e, 0xd1, 0x67, 0xe9, 0x85, 0xf8, 0xb9, 0x13, 0xde, - 0x1e, 0x78, 0x6a, 0xf0, 0xd4, 0x8a, 0x9f, 0x61, 0xd7, 0x52, 0x31, 0x8b, 0xcc, 0xd0, 0x5b, 0xcd, - 0x15, 0x63, 0x4d, 0xda, 0xe3, 0xdf, 0x20, 0x9c, 0x07, 0x16, 0xfd, 0xc0, 0x08, 0x94, 0x5c, 0x72, - 0xca, 0x64, 0xba, 0x1d, 0xcb, 0x4d, 0x69, 0x21, 0x37, 0x65, 0x6b, 0x1c, 0x7b, 0xe4, 0xa6, 0x20, - 0x37, 0xe5, 0xb5, 0x1b, 0x86, 0xdc, 0x14, 0x91, 0x2b, 0x40, 0x6e, 0x0a, 0x38, 0x2e, 0x70, 0x5c, - 0xe0, 0xb8, 0xc0, 0x71, 0x81, 0xe3, 0xca, 0x2f, 0xad, 0xc8, 0x4d, 0xe1, 0xfa, 0x41, 0x6e, 0x8a, - 0xec, 0xfc, 0x48, 0x0f, 0x10, 0xd6, 0x5a, 0x8b, 0x5b, 0x0f, 0xb9, 0x29, 0xd8, 0x7c, 0x1a, 0x72, - 0x53, 0x4a, 0xff, 0x7d, 0x90, 0x3a, 0x01, 0x58, 0x09, 0x58, 0x09, 0x58, 0x09, 0x58, 0x09, 0x58, - 0xc9, 0x27, 0xad, 0x48, 0x9d, 0x28, 0x3a, 0x75, 0x02, 0xc1, 0x8a, 0x97, 0x75, 0xcc, 0x7e, 0x47, - 0xf6, 0x27, 0x01, 0x65, 0x54, 0x77, 0xe2, 0xdf, 0x71, 0x7b, 0x51, 0xdd, 0x49, 0xac, 0xce, 0xd0, - 0xe4, 0x9b, 0x06, 0xde, 0x78, 0x10, 0x38, 0xb1, 0xa9, 0xb9, 0x98, 0xce, 0xfd, 0xe5, 0xd3, 0xdc, - 0x95, 0x7f, 0xb9, 0x18, 0x3d, 0xb4, 0xbf, 0x9c, 0x4f, 0xae, 0xf7, 0xcb, 0x67, 0xcf, 0x1b, 0xfd, - 0x1e, 0x5e, 0xe9, 0x97, 0xe4, 0xdd, 0x7f, 0x4d, 0x2f, 0x74, 0x8f, 0x4b, 0x52, 0xf1, 0x66, 0xb1, - 0x88, 0x64, 0xaf, 0x88, 0x15, 0x9e, 0x6a, 0xa1, 0xf0, 0x54, 0x69, 0x30, 0x13, 0x0a, 0x4f, 0xed, - 0xaf, 0x39, 0x65, 0x2f, 0x3c, 0x65, 0x0c, 0x06, 0x6a, 0x14, 0xe8, 0xf7, 0xae, 0x29, 0x98, 0xe0, - 0x37, 0x3f, 0x29, 0x77, 0x9a, 0x8e, 0x60, 0xfe, 0x48, 0x25, 0xe2, 0xa0, 0x79, 0xfd, 0xcc, 0x3e, - 0xfa, 0x35, 0x94, 0x95, 0xc4, 0x43, 0x5a, 0xe4, 0xce, 0x91, 0x74, 0x48, 0x8b, 0x2c, 0x2d, 0x09, - 0x97, 0x48, 0xdb, 0x57, 0xd7, 0xb5, 0x95, 0xe1, 0x48, 0x36, 0x50, 0x6d, 0xe2, 0x8c, 0xc0, 0xaa, - 0x23, 0x61, 0x3e, 0x28, 0x2f, 0xb0, 0xfc, 0x28, 0x3b, 0x74, 0x02, 0xc2, 0x1f, 0x0c, 0x5b, 0xd0, - 0xa7, 0x58, 0x3f, 0xff, 0x2e, 0xb9, 0x17, 0xcd, 0x46, 0x03, 0xce, 0x05, 0x9c, 0x0b, 0x38, 0x17, - 0x70, 0x2e, 0xe0, 0x5c, 0xc8, 0x48, 0xdb, 0xd8, 0x72, 0x82, 0x66, 0x47, 0xd0, 0xb7, 0xe8, 0xa0, - 0x1b, 0x54, 0xf6, 0x2f, 0x86, 0x6e, 0x50, 0x92, 0x17, 0x80, 0x6e, 0x50, 0xdc, 0x5b, 0xaa, 0xdd, - 0x38, 0x43, 0x3b, 0x28, 0xb1, 0x5d, 0x85, 0x76, 0x50, 0x3b, 0x0b, 0x4e, 0x07, 0x63, 0xcf, 0x0b, - 0x61, 0xe1, 0xf4, 0x1c, 0xa3, 0x60, 0xa3, 0x85, 0xe5, 0x99, 0x01, 0xb1, 0x00, 0xb1, 0x00, 0xb1, - 0x00, 0xb1, 0x00, 0xb1, 0xd0, 0x6f, 0x17, 0x08, 0x2b, 0x95, 0x3b, 0xdc, 0x80, 0x2f, 0x0c, 0x84, - 0x45, 0xbb, 0xa5, 0xd0, 0x6f, 0x17, 0x00, 0x0b, 0x00, 0x2b, 0xff, 0xa6, 0x1a, 0x79, 0x4a, 0xdd, - 0x8f, 0x02, 0x39, 0x5c, 0x35, 0x9d, 0x70, 0x97, 0xe2, 0x7b, 0xa1, 0x5f, 0x8c, 0x00, 0x1f, 0xd0, - 0x27, 0xd0, 0x27, 0xd0, 0x27, 0xd0, 0xa7, 0x8c, 0xb4, 0x21, 0x7b, 0xa8, 0x4c, 0xfe, 0x83, 0x6e, - 0x2a, 0xdb, 0x78, 0x14, 0xf7, 0x22, 0xe2, 0x69, 0x77, 0xc9, 0x97, 0x40, 0xa6, 0x10, 0x1c, 0x09, - 0x38, 0x12, 0x70, 0x24, 0xe0, 0x48, 0x08, 0x49, 0x1b, 0x32, 0x85, 0x72, 0xff, 0x80, 0xc7, 0xe6, - 0x99, 0x17, 0x3c, 0xb6, 0xc8, 0x96, 0x2a, 0x92, 0xc7, 0x3e, 0xea, 0x34, 0xb0, 0xab, 0xc4, 0x76, - 0x15, 0x88, 0xec, 0x1d, 0x06, 0xa2, 0xd2, 0x19, 0x42, 0x52, 0x99, 0x41, 0x38, 0xaa, 0x02, 0x00, - 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xaa, 0x21, 0x8f, 0x8a, 0x40, 0x35, 0x22, 0x8f, 0x6a, 0x5b, - 0xf1, 0x27, 0x4e, 0xaa, 0x00, 0x7f, 0x12, 0x6f, 0x29, 0xf1, 0x5a, 0xe4, 0x80, 0x9f, 0x80, 0x9f, - 0x3b, 0x08, 0x3f, 0x1f, 0x2c, 0x2f, 0x18, 0x1b, 0xb6, 0x1e, 0x97, 0x1e, 0x94, 0x43, 0xa1, 0xcb, - 0x13, 0x03, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0xc5, 0xd2, 0x66, 0x8d, 0x84, - 0x74, 0xe3, 0xbc, 0x7e, 0x6c, 0x9e, 0x09, 0xcc, 0x15, 0xdf, 0xcb, 0x9d, 0xc3, 0x58, 0xb3, 0x95, - 0x7b, 0x68, 0x0b, 0xae, 0xdd, 0xca, 0x1a, 0x9e, 0xca, 0x96, 0x68, 0x0f, 0x94, 0xe7, 0x88, 0xb7, - 0xff, 0xaa, 0x54, 0xab, 0x37, 0x0d, 0xfd, 0xac, 0xff, 0xe3, 0xa6, 0xa9, 0x9f, 0xf5, 0x27, 0x0f, - 0x9b, 0xd1, 0x9f, 0xc9, 0xe3, 0xd6, 0x4d, 0x43, 0x6f, 0x4f, 0x1f, 0x1f, 0xdf, 0x34, 0xf4, 0xe3, - 0x7e, 0xad, 0xd7, 0xab, 0xd7, 0xbe, 0x1f, 0x3d, 0xa5, 0xff, 0x60, 0xf5, 0xa7, 0x9b, 0x5e, 0x6f, - 0xf4, 0xfd, 0x8f, 0xa7, 0xf0, 0xf7, 0xc7, 0xa7, 0xfe, 0xcf, 0xb5, 0x77, 0x95, 0x5d, 0xeb, 0x8c, - 0x73, 0xb0, 0xc3, 0xd2, 0xd8, 0x81, 0x34, 0xb2, 0x4b, 0x63, 0xf7, 0x47, 0x28, 0x33, 0x86, 0x3e, - 0x3c, 0xd7, 0x7f, 0xeb, 0x7f, 0x6f, 0x1c, 0xb4, 0x9f, 0x6a, 0xdd, 0x5a, 0x75, 0xf9, 0xb5, 0x6e, - 0xed, 0x7b, 0xe3, 0xe0, 0xf8, 0xa9, 0x5a, 0x5d, 0xf3, 0x9f, 0x77, 0xeb, 0xc6, 0xa8, 0xfd, 0xa8, - 0x56, 0xab, 0xb1, 0x1c, 0x2e, 0xc8, 0xe6, 0x4d, 0xa3, 0xd9, 0x7f, 0x17, 0x3d, 0x9c, 0xfc, 0x4e, - 0xa4, 0x7b, 0xa3, 0x37, 0xd7, 0xd6, 0xca, 0xf4, 0x81, 0xb8, 0x0a, 0xfb, 0x77, 0xb7, 0xff, 0x73, - 0xb7, 0xf6, 0xbd, 0xf3, 0x34, 0x7d, 0x1c, 0xfd, 0xae, 0xfd, 0xa8, 0xd6, 0xdf, 0xf6, 0x7a, 0xf5, - 0xfa, 0xdb, 0xda, 0xe4, 0x06, 0xc4, 0xef, 0x7b, 0x3b, 0xf9, 0xef, 0xbb, 0x6e, 0x77, 0xe5, 0xa5, - 0x5a, 0xf5, 0xa7, 0xfa, 0x2e, 0xaa, 0xa5, 0x6d, 0x27, 0x05, 0x98, 0xdd, 0xd2, 0x8f, 0x96, 0x1f, - 0x9c, 0x07, 0x81, 0x50, 0x67, 0xf0, 0x4b, 0xcb, 0xf9, 0x60, 0x47, 0xf5, 0x0e, 0x85, 0xf8, 0xaf, - 0xca, 0xa5, 0xf1, 0x6d, 0x6e, 0xc6, 0xe6, 0x69, 0xbb, 0xdd, 0x39, 0x69, 0xb7, 0x1b, 0x27, 0x47, - 0x27, 0x8d, 0xb3, 0xe3, 0xe3, 0x66, 0xa7, 0x29, 0x11, 0x14, 0xf8, 0xd3, 0x33, 0x95, 0xa7, 0xcc, - 0x5f, 0x1e, 0x2b, 0x5d, 0xcd, 0x19, 0xdb, 0x36, 0x68, 0xa4, 0x67, 0x69, 0x24, 0xcf, 0x1d, 0x07, - 0xca, 0xd3, 0x2d, 0x53, 0x9e, 0x48, 0x9a, 0x4d, 0x0d, 0x2a, 0x09, 0x54, 0x12, 0xa8, 0x24, 0x50, - 0x49, 0xa0, 0x92, 0x10, 0xa9, 0xdf, 0x3e, 0xdc, 0x8a, 0x48, 0xbd, 0xe4, 0x05, 0x20, 0x52, 0xcf, - 0xbd, 0xa5, 0x50, 0xf1, 0x04, 0x91, 0xfa, 0x92, 0x81, 0x72, 0xf4, 0x7a, 0xd2, 0xf6, 0xa5, 0x75, - 0x22, 0x63, 0x27, 0xce, 0xed, 0x68, 0x42, 0x28, 0x87, 0xcc, 0xc5, 0x11, 0x39, 0x33, 0x12, 0x67, - 0x47, 0xe0, 0x68, 0x4e, 0xb8, 0x0d, 0x08, 0x1b, 0xcd, 0x09, 0x4b, 0x63, 0xb0, 0xd8, 0x91, 0xb3, - 0x60, 0x83, 0x75, 0x89, 0x86, 0xea, 0x49, 0x03, 0xf5, 0x7a, 0xfd, 0x70, 0x62, 0x71, 0x0f, 0x57, - 0x75, 0xf3, 0xb6, 0xd8, 0xc6, 0x37, 0x25, 0xde, 0xa1, 0xa1, 0x52, 0x92, 0xb0, 0x7c, 0xbc, 0xf1, - 0x1e, 0xfe, 0xf8, 0x4e, 0x21, 0xf1, 0x1c, 0xde, 0xf8, 0x0d, 0xf5, 0x4e, 0x62, 0x76, 0xca, 0x8b, - 0x74, 0xc6, 0x2b, 0x2c, 0x3d, 0xb6, 0x33, 0x37, 0x2b, 0xa7, 0xd5, 0x7c, 0x74, 0xfa, 0x89, 0x66, - 0x24, 0xa2, 0x7d, 0x59, 0x51, 0xdf, 0x02, 0xcf, 0xd0, 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0x5a, - 0xeb, 0x5b, 0xf1, 0xd4, 0x50, 0x79, 0xca, 0x19, 0xd0, 0xf3, 0xb8, 0x0c, 0x82, 0x33, 0x75, 0x0d, - 0xae, 0x7f, 0xfb, 0x55, 0x3b, 0x3e, 0x39, 0x3b, 0xd5, 0x74, 0xed, 0xf3, 0x44, 0xdd, 0x6b, 0xd7, - 0x91, 0xba, 0xd7, 0xae, 0x95, 0x39, 0x76, 0x4c, 0xc3, 0x19, 0x3c, 0x6a, 0x57, 0x9e, 0x1b, 0xb8, - 0x03, 0xd7, 0xee, 0x39, 0xd5, 0xcf, 0xd7, 0xd7, 0x57, 0x35, 0xed, 0xb3, 0xf2, 0x7c, 0xcb, 0x75, - 0xb4, 0x23, 0x6d, 0xe8, 0x7a, 0xda, 0xc5, 0xd5, 0x43, 0x5b, 0x33, 0x1c, 0x33, 0x7c, 0xc0, 0x51, - 0xc2, 0x85, 0xdb, 0x19, 0x9f, 0x77, 0xc2, 0x67, 0x8b, 0xc8, 0xe4, 0xf5, 0x49, 0xf9, 0xdf, 0x0b, - 0x7e, 0x37, 0xfd, 0x2a, 0x97, 0xdd, 0x23, 0x7a, 0x53, 0x2e, 0xf2, 0x8e, 0x4a, 0x7f, 0x31, 0xd9, - 0x53, 0x71, 0x3b, 0x4a, 0xb3, 0x7f, 0xf2, 0xaf, 0x72, 0xbe, 0x11, 0x72, 0xae, 0xea, 0xd4, 0xcf, - 0xce, 0xcd, 0x64, 0xd0, 0x3a, 0xd2, 0xf4, 0x8e, 0xb3, 0x88, 0xa3, 0x4c, 0xeb, 0x18, 0xe7, 0x5d, - 0xda, 0xf3, 0xf1, 0x6d, 0xf8, 0x75, 0x95, 0x49, 0xe2, 0x0c, 0xd0, 0x48, 0x7a, 0x62, 0xf4, 0x0f, - 0xdd, 0x81, 0x6e, 0x0d, 0xbb, 0x73, 0x72, 0xbb, 0xf4, 0x42, 0xfc, 0x7c, 0x51, 0xb6, 0x57, 0x5f, - 0x8b, 0x5e, 0x1a, 0x75, 0x23, 0x39, 0x9f, 0x3c, 0x9c, 0x49, 0xfb, 0xc2, 0x73, 0x22, 0x63, 0x5a, - 0x79, 0xaf, 0xfc, 0x81, 0x67, 0x8d, 0x62, 0xfd, 0x57, 0x39, 0x37, 0x4d, 0x2b, 0x7c, 0x6c, 0xd8, - 0xda, 0xc5, 0x95, 0x16, 0xce, 0xa5, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0xca, 0x6b, 0xec, - 0x45, 0xaa, 0x32, 0x34, 0x5f, 0x3d, 0x67, 0xf6, 0x4d, 0xa8, 0xae, 0x66, 0xca, 0x79, 0x10, 0x0d, - 0x47, 0x4d, 0xd0, 0x72, 0x10, 0xb2, 0x6c, 0x04, 0x2c, 0x97, 0x8f, 0xc7, 0x4e, 0xb0, 0xb2, 0x3b, - 0x74, 0x9c, 0x04, 0x6a, 0xb9, 0xc0, 0xd9, 0x7b, 0x8b, 0x96, 0x09, 0xaa, 0x44, 0x9e, 0x06, 0xf9, - 0x8e, 0x4a, 0x02, 0x43, 0xe1, 0xe8, 0xc4, 0x6b, 0xbd, 0xa4, 0xe0, 0x3e, 0x38, 0x03, 0xdb, 0xf5, - 0x2d, 0xe7, 0x36, 0x54, 0x68, 0x81, 0x61, 0x39, 0xca, 0x8b, 0x7c, 0xf1, 0xd0, 0x3f, 0xd7, 0x22, - 0x16, 0xc2, 0xd7, 0xee, 0x0c, 0xc7, 0xb4, 0x95, 0xa9, 0x7d, 0x7d, 0xd4, 0x82, 0x3b, 0xcb, 0xef, - 0x39, 0x17, 0x57, 0x5a, 0xa2, 0xeb, 0xa8, 0xaf, 0x8f, 0x56, 0xe5, 0xb1, 0xa9, 0x3e, 0x4e, 0x15, - 0xc8, 0xae, 0x0a, 0x8b, 0x80, 0xbd, 0xac, 0xb1, 0xa7, 0x62, 0x30, 0x2f, 0x53, 0xac, 0xa9, 0xdc, - 0xcc, 0x3d, 0x23, 0xbf, 0x25, 0xc0, 0x73, 0xf1, 0xf1, 0x5d, 0x5b, 0xc9, 0x7b, 0x49, 0x29, 0x82, - 0x22, 0x78, 0x30, 0x71, 0xdd, 0xb0, 0xad, 0xbc, 0x18, 0x8f, 0xde, 0xe1, 0x1b, 0xb5, 0xbf, 0xdb, - 0x71, 0x88, 0x82, 0x19, 0xa7, 0x7e, 0x5e, 0x5a, 0x82, 0x96, 0x3f, 0x94, 0xe4, 0x0d, 0x09, 0x14, - 0x51, 0xfa, 0xf8, 0x5a, 0x3e, 0x79, 0xce, 0xbe, 0xd6, 0xd9, 0x3e, 0x99, 0xd1, 0x9b, 0xa0, 0xda, - 0x15, 0x12, 0xbb, 0x21, 0xdb, 0x82, 0xa4, 0xbf, 0x9d, 0x19, 0x6e, 0x65, 0x65, 0x30, 0x45, 0x31, - 0xd9, 0x6e, 0xe1, 0xac, 0xe9, 0xf9, 0x64, 0x9c, 0x8c, 0x8b, 0x99, 0x0f, 0xa2, 0xe5, 0x86, 0x62, - 0x14, 0x90, 0x8b, 0x0c, 0x5a, 0x51, 0x79, 0x4e, 0xe4, 0x50, 0x89, 0xdc, 0xed, 0xa1, 0x84, 0x3e, - 0xb2, 0xca, 0x27, 0x2f, 0xeb, 0x53, 0x51, 0x4e, 0x88, 0x75, 0xf2, 0x67, 0x02, 0x27, 0xbb, 0x6e, - 0x3a, 0x60, 0xce, 0x15, 0xa1, 0xac, 0x18, 0x4e, 0xd0, 0xdc, 0x32, 0xaf, 0xeb, 0x40, 0x93, 0x9e, - 0x4c, 0x46, 0xf5, 0x50, 0x52, 0x3b, 0xe4, 0x54, 0x0e, 0x35, 0x62, 0x63, 0xa3, 0x6a, 0xd8, 0xe0, - 0x17, 0x07, 0x15, 0x53, 0x6c, 0xb0, 0x96, 0x2c, 0x5d, 0x97, 0xa1, 0x79, 0x22, 0x51, 0x73, 0xc4, - 0xa7, 0x92, 0xa1, 0x8b, 0xc7, 0x5b, 0x37, 0xd0, 0xdd, 0x81, 0x3e, 0x70, 0xef, 0x47, 0x91, 0xfb, - 0x67, 0xea, 0xb6, 0x32, 0x86, 0xe1, 0xe0, 0x4f, 0x45, 0x39, 0xe6, 0x39, 0x9c, 0x91, 0xfb, 0x60, - 0x4c, 0x67, 0xa4, 0xc2, 0xc1, 0xa0, 0xd1, 0xa1, 0xd1, 0xa1, 0xd1, 0x4b, 0xa4, 0xd1, 0xc9, 0xba, - 0xd8, 0x11, 0x76, 0xa9, 0x23, 0xae, 0x2d, 0x40, 0x18, 0x9e, 0xe5, 0xa8, 0x0d, 0x90, 0x1c, 0xd4, - 0xee, 0x10, 0x57, 0xaa, 0x63, 0x3f, 0x87, 0xcd, 0x77, 0xce, 0x9a, 0x30, 0xc8, 0xc4, 0x72, 0xf8, - 0x7e, 0xb6, 0x66, 0xc7, 0xc7, 0x47, 0xc7, 0x58, 0x36, 0x12, 0xe5, 0x48, 0x37, 0x4a, 0xbf, 0x50, - 0x25, 0xcd, 0x10, 0xd1, 0x64, 0x88, 0x60, 0x32, 0x64, 0x58, 0x5d, 0xff, 0xf6, 0xab, 0x76, 0x72, - 0xd6, 0xec, 0x6a, 0x11, 0x4d, 0xed, 0xa8, 0x20, 0x09, 0x44, 0x6d, 0x59, 0xda, 0x15, 0x57, 0x28, - 0x51, 0x36, 0xf3, 0xea, 0x85, 0xe5, 0x80, 0xc4, 0x03, 0x45, 0x4a, 0x7c, 0x72, 0x77, 0xc3, 0x3b, - 0x71, 0xc4, 0xa3, 0xc4, 0xb1, 0x1d, 0x47, 0x59, 0xb7, 0x77, 0x5f, 0x5d, 0xcf, 0xcf, 0x1f, 0xde, - 0x99, 0x0d, 0x85, 0x08, 0x0f, 0x22, 0x3c, 0x85, 0xe0, 0xef, 0x2d, 0x8b, 0xf0, 0x4c, 0x25, 0x86, - 0x8e, 0x3d, 0x4b, 0x46, 0xa4, 0xa1, 0xd0, 0x9a, 0xa0, 0xd0, 0x40, 0xa1, 0xed, 0x23, 0x85, 0x46, - 0x95, 0xb2, 0x9f, 0x37, 0x77, 0xe2, 0xd9, 0xcd, 0x9b, 0x2b, 0x97, 0x82, 0x49, 0xdc, 0xc9, 0xc5, - 0x9e, 0x43, 0xfc, 0xd9, 0xd4, 0x80, 0x24, 0xf4, 0xc4, 0x89, 0x1f, 0x26, 0x88, 0x59, 0xd6, 0x13, - 0x3f, 0x16, 0xe3, 0x79, 0x1f, 0xf2, 0x43, 0x1e, 0x4c, 0x15, 0xdf, 0x70, 0x9a, 0x46, 0x52, 0xdd, - 0x88, 0xa9, 0x1d, 0x31, 0xf5, 0x23, 0xa1, 0x86, 0x68, 0xd5, 0x11, 0xb1, 0x5a, 0x4a, 0x6e, 0x00, - 0x5b, 0x85, 0xb6, 0xb5, 0xcd, 0xd5, 0x74, 0xc7, 0xd5, 0xff, 0xeb, 0x3a, 0x1c, 0x27, 0x2e, 0x38, - 0xdb, 0x37, 0xb1, 0xb7, 0x69, 0x2a, 0xbc, 0x39, 0x1a, 0x93, 0x78, 0x85, 0x13, 0xf7, 0x7a, 0xf5, - 0xfe, 0xdb, 0x4a, 0xd9, 0x0f, 0x61, 0x6c, 0x59, 0x51, 0x30, 0x36, 0xc2, 0x97, 0x4f, 0x7b, 0x51, - 0x86, 0x68, 0x6d, 0xcb, 0xf9, 0x5b, 0xb7, 0x8d, 0x47, 0xe5, 0xb1, 0xf5, 0x41, 0x9e, 0x55, 0x96, - 0x5c, 0x9d, 0x0b, 0x3e, 0x12, 0x7c, 0x24, 0xf8, 0x48, 0x7b, 0xe3, 0x23, 0x5d, 0x1a, 0x8e, 0x69, - 0x04, 0xae, 0xf7, 0xc8, 0x50, 0x16, 0x80, 0xdf, 0xff, 0x1a, 0xdd, 0x3d, 0xfa, 0x8c, 0xed, 0x34, - 0xb7, 0xdc, 0xef, 0x9a, 0xef, 0x5f, 0xd9, 0x7a, 0xaa, 0x76, 0x17, 0x9f, 0xd7, 0xde, 0x72, 0x74, - 0x68, 0x84, 0xeb, 0xb2, 0x6d, 0xae, 0x0b, 0x0a, 0xe4, 0xe5, 0x8a, 0x7d, 0x27, 0xe1, 0xe0, 0xe4, - 0x51, 0xae, 0x70, 0x38, 0xfd, 0xf2, 0x10, 0x2c, 0x0d, 0x25, 0x2f, 0x47, 0xcf, 0xc7, 0x11, 0xfb, - 0x98, 0xa0, 0xf5, 0x41, 0xeb, 0x4b, 0xfb, 0x8a, 0xe5, 0x52, 0xc2, 0xe4, 0x7e, 0x1b, 0x63, 0x27, - 0x03, 0x8e, 0xce, 0x05, 0xf3, 0x9d, 0x0a, 0x26, 0x75, 0x10, 0xe3, 0x7e, 0x05, 0xd3, 0x7a, 0x89, - 0xbb, 0xa4, 0xda, 0x27, 0x3d, 0x89, 0xc8, 0xb5, 0xfb, 0x64, 0xd8, 0x92, 0xc7, 0x6d, 0x5b, 0x50, - 0xf0, 0x50, 0xf0, 0x7b, 0xa8, 0xe0, 0x11, 0xb7, 0x05, 0x27, 0xc9, 0xac, 0x66, 0xb8, 0xd5, 0x8d, - 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x9e, 0x3e, 0xd0, 0x10, 0xb7, 0xdd, 0xc0, 0x71, - 0x41, 0xdc, 0x16, 0x71, 0xdb, 0x22, 0x39, 0x3e, 0x84, 0x27, 0xe1, 0x0a, 0xc0, 0x15, 0x80, 0x2b, - 0xb0, 0x75, 0xae, 0x00, 0xc2, 0x93, 0xbb, 0xeb, 0x5e, 0xec, 0x40, 0x78, 0xb2, 0x94, 0x16, 0xda, - 0xf5, 0xac, 0x5b, 0x8e, 0xd2, 0x1c, 0x89, 0x7d, 0x98, 0x8c, 0x0f, 0x4b, 0x0c, 0x4b, 0x0c, 0x4b, - 0x0c, 0x50, 0x4e, 0xb6, 0xdb, 0xa7, 0xf1, 0x73, 0x9d, 0x45, 0xc1, 0x2c, 0x18, 0xcc, 0x36, 0xc3, - 0xd8, 0x1f, 0x9c, 0xf1, 0x3d, 0x12, 0x3d, 0x36, 0x96, 0xa7, 0x5d, 0x48, 0xf4, 0x98, 0x04, 0xb9, - 0xd0, 0x0b, 0x11, 0xbd, 0x10, 0x77, 0xb9, 0x17, 0xe2, 0x5e, 0x97, 0x70, 0x3a, 0x6d, 0x75, 0xba, - 0xda, 0xb9, 0xa3, 0x7d, 0x08, 0xee, 0x26, 0x65, 0x83, 0xe2, 0xce, 0x02, 0xda, 0xb5, 0xf2, 0x5d, - 0x7b, 0x1c, 0xf5, 0x27, 0x44, 0x61, 0x27, 0x59, 0xa7, 0x6c, 0xa5, 0xb0, 0x53, 0xaa, 0x45, 0x42, - 0xb9, 0x27, 0x52, 0xed, 0xb0, 0x3d, 0x2d, 0x49, 0x56, 0x0d, 0xb8, 0x6c, 0x4f, 0x92, 0x3f, 0xa6, - 0xb3, 0xa2, 0x6a, 0x55, 0xb9, 0xf6, 0x43, 0x99, 0x0b, 0x57, 0xe5, 0x4b, 0xcf, 0x22, 0x49, 0xc7, - 0x22, 0x2b, 0x58, 0xd5, 0x42, 0xc1, 0x2a, 0x3e, 0x8a, 0x04, 0x05, 0xab, 0x92, 0x0b, 0x47, 0x4b, - 0x92, 0x4d, 0x06, 0x43, 0x4b, 0x12, 0x06, 0x3d, 0x43, 0xae, 0x6f, 0xb8, 0x00, 0x01, 0xaa, 0x6f, - 0x69, 0x68, 0x49, 0xb2, 0x89, 0xd1, 0x6f, 0xa2, 0x53, 0x07, 0x3a, 0x75, 0x40, 0xd1, 0x41, 0xd1, - 0x95, 0x4a, 0xd1, 0xa1, 0x53, 0x47, 0x9a, 0x0b, 0x43, 0xa7, 0x8e, 0xc5, 0x4d, 0x84, 0x4e, 0x1d, - 0xe8, 0xd4, 0x41, 0xa6, 0x1c, 0xe9, 0x46, 0x41, 0xa7, 0x0e, 0x51, 0xad, 0x88, 0x4e, 0x1d, 0x45, - 0x7b, 0x3a, 0x6b, 0x3d, 0x1e, 0x74, 0xea, 0x10, 0x00, 0x57, 0x08, 0x05, 0x2c, 0x84, 0x02, 0x72, - 0x24, 0x72, 0xc8, 0x84, 0x01, 0xc6, 0x8e, 0x33, 0xbe, 0xff, 0xaa, 0xbc, 0x1c, 0xa4, 0xe4, 0xcc, - 0x77, 0x9e, 0x8d, 0x85, 0x0e, 0x16, 0x11, 0xc0, 0x1a, 0x22, 0x20, 0x90, 0x05, 0x97, 0x0e, 0xf7, - 0x26, 0x20, 0x40, 0x54, 0xde, 0x9e, 0xb6, 0xac, 0xfd, 0xde, 0x74, 0xaf, 0x18, 0x82, 0x56, 0xe2, - 0xa0, 0x95, 0x86, 0xe8, 0x5e, 0x31, 0x85, 0x3e, 0x44, 0xf1, 0xbe, 0x95, 0xdd, 0x4b, 0x13, 0xf7, - 0x9b, 0x7d, 0x61, 0xc2, 0xf8, 0x5f, 0x32, 0x68, 0x84, 0xa5, 0x69, 0x5c, 0xeb, 0x3e, 0x0a, 0x7a, - 0x95, 0x46, 0xe1, 0x49, 0x02, 0xcf, 0x1d, 0xa9, 0xf7, 0x32, 0x44, 0x41, 0xaf, 0xb4, 0xbb, 0x95, - 0x2e, 0xe0, 0xb8, 0xe2, 0xd5, 0x34, 0xf7, 0xe2, 0xbc, 0x02, 0x7b, 0xc5, 0xd0, 0x6d, 0x3f, 0x58, - 0xb0, 0x3d, 0xf9, 0xa5, 0x33, 0x5c, 0x4d, 0x52, 0x01, 0xb4, 0x98, 0xd0, 0x79, 0xf2, 0x9d, 0x74, - 0x4f, 0x0d, 0xe9, 0x00, 0xcf, 0xe2, 0xb0, 0xc0, 0x3d, 0xc0, 0x3d, 0xc0, 0x3d, 0xc5, 0xe3, 0x1e, - 0x74, 0xed, 0x03, 0x1a, 0x00, 0x1a, 0xd8, 0x37, 0x34, 0x40, 0x5f, 0xfd, 0x71, 0x6a, 0xdc, 0x19, - 0x8b, 0x40, 0x26, 0x53, 0xa0, 0xec, 0x84, 0x48, 0xd9, 0x89, 0x21, 0xca, 0x4e, 0x14, 0xa8, 0x8c, - 0x24, 0x94, 0x12, 0xad, 0x72, 0x22, 0x56, 0x52, 0x7c, 0xd4, 0xc5, 0xca, 0x6e, 0xa7, 0xaf, 0x49, - 0xbe, 0xe2, 0xb9, 0x9c, 0xf0, 0xd4, 0x67, 0x8a, 0x11, 0x6c, 0xb8, 0x2d, 0xba, 0x73, 0xc8, 0x74, - 0xe9, 0x85, 0xf8, 0x79, 0x74, 0x42, 0x11, 0xcd, 0x59, 0xf6, 0xb7, 0xaf, 0xdc, 0x3c, 0x61, 0xc1, - 0x67, 0xa8, 0x17, 0x66, 0x81, 0xad, 0x86, 0xad, 0x86, 0xad, 0x86, 0xad, 0x86, 0xad, 0xde, 0xd0, - 0x56, 0xdf, 0xcc, 0x6c, 0xf5, 0x3f, 0x06, 0x63, 0xcf, 0x53, 0x4e, 0x50, 0xad, 0x1d, 0xd6, 0xeb, - 0x33, 0x16, 0xba, 0x1f, 0x7f, 0x64, 0x91, 0x8c, 0x5e, 0x7d, 0x2d, 0x19, 0xd9, 0x54, 0xdf, 0x60, - 0xf6, 0xd1, 0x93, 0xad, 0x7c, 0x0b, 0x24, 0x13, 0x89, 0x59, 0x08, 0x3c, 0xec, 0x60, 0x67, 0x36, - 0xb4, 0xef, 0x29, 0xa5, 0x9f, 0x06, 0x02, 0x57, 0xdc, 0x0f, 0x03, 0x81, 0x9b, 0x79, 0x40, 0x10, - 0xb8, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x65, 0x04, 0x85, 0x7c, 0x04, 0x2e, 0x78, - 0x4a, 0x98, 0x24, 0x98, 0x24, 0x98, 0x24, 0x98, 0x24, 0x98, 0xa4, 0xdd, 0xe3, 0x29, 0x41, 0xc7, - 0x95, 0x9d, 0x8e, 0x43, 0xfd, 0x7c, 0xae, 0x55, 0x2d, 0x60, 0x35, 0x65, 0x8b, 0x29, 0xff, 0x33, - 0xb9, 0x8a, 0x2f, 0xc9, 0xdb, 0xae, 0xd5, 0x70, 0x1b, 0x53, 0xee, 0x69, 0x28, 0x5c, 0x52, 0xea, - 0x96, 0x3c, 0xc5, 0xbe, 0x85, 0x14, 0xfb, 0xe2, 0x5d, 0x4e, 0xa4, 0xd8, 0x6f, 0xfc, 0x85, 0x70, - 0xb4, 0x98, 0x62, 0x50, 0x1c, 0x2d, 0x2e, 0x03, 0x16, 0x47, 0x2c, 0x4a, 0x1c, 0x6b, 0xe3, 0x68, - 0x71, 0xfe, 0xdd, 0x5a, 0xfe, 0xa3, 0xc5, 0x80, 0x1c, 0xf2, 0x90, 0x83, 0x00, 0x32, 0xa2, 0x6c, - 0x1a, 0xfd, 0xba, 0x54, 0x72, 0xe1, 0x9f, 0xf4, 0xa0, 0x4f, 0xac, 0x56, 0xdb, 0x1b, 0xc6, 0x95, - 0xce, 0xbb, 0xc2, 0x7c, 0x2b, 0x5b, 0xc9, 0xd4, 0xa9, 0x66, 0xc3, 0x65, 0x4c, 0xb7, 0x76, 0x9b, - 0xaf, 0x40, 0x8a, 0xbb, 0x5f, 0xb1, 0x46, 0x0f, 0x9d, 0xd4, 0xf7, 0x7c, 0x96, 0xcc, 0x10, 0x7e, - 0x3a, 0xe5, 0x5a, 0x67, 0x43, 0xd4, 0x99, 0x1d, 0xcc, 0x3c, 0x8e, 0x64, 0xee, 0x9a, 0xee, 0x79, - 0x1d, 0x43, 0x32, 0x07, 0x90, 0xcc, 0xd1, 0xa3, 0xa8, 0xc9, 0xce, 0xab, 0x4b, 0xb2, 0x22, 0xd6, - 0x4a, 0xdc, 0x9f, 0x5e, 0xf9, 0xf9, 0x2b, 0x4b, 0xce, 0x86, 0x42, 0x61, 0x49, 0x74, 0x9a, 0x12, - 0x15, 0xae, 0x62, 0x5c, 0xb4, 0xdc, 0x85, 0x25, 0x63, 0x89, 0xa1, 0x63, 0x7f, 0xa7, 0x03, 0xa2, - 0xc4, 0x0a, 0xbb, 0x80, 0x72, 0xd1, 0x20, 0xe8, 0x58, 0xa2, 0xa1, 0xc4, 0xca, 0x6b, 0x9b, 0x17, - 0x25, 0x56, 0xca, 0xa6, 0x06, 0xc0, 0x8a, 0x16, 0xa1, 0x26, 0xca, 0xc9, 0x8a, 0xd2, 0x67, 0xe8, - 0x8f, 0x18, 0x53, 0xf3, 0x47, 0x48, 0x80, 0x94, 0x49, 0x80, 0x1c, 0x21, 0x01, 0xb2, 0x40, 0xf5, - 0x23, 0xa1, 0x86, 0x68, 0xd5, 0x11, 0xb1, 0x5a, 0x4a, 0x6e, 0x00, 0x7f, 0x02, 0xa4, 0x35, 0x7a, - 0xe8, 0xe8, 0x31, 0x16, 0xd1, 0x1d, 0x57, 0xff, 0xaf, 0xeb, 0x28, 0xce, 0x6c, 0xc8, 0x53, 0x9e, - 0x6c, 0xc8, 0x40, 0x79, 0x0e, 0x69, 0x48, 0x7c, 0x61, 0x82, 0x6a, 0xb5, 0xfb, 0xe3, 0xa6, 0xa1, - 0x9f, 0x19, 0xfa, 0xf0, 0x5c, 0xff, 0xad, 0xff, 0xbd, 0x71, 0xd0, 0x7e, 0xaa, 0x75, 0x6b, 0xd5, - 0xe5, 0xd7, 0xba, 0xb5, 0xef, 0x8d, 0x83, 0xe3, 0xa7, 0x6a, 0x75, 0xcd, 0x7f, 0xde, 0xad, 0x1b, - 0xa3, 0xf6, 0xa3, 0x5a, 0xad, 0xb6, 0x8e, 0x6f, 0x1a, 0xfa, 0x71, 0xff, 0x47, 0xeb, 0xa6, 0xa1, - 0xb7, 0xfb, 0xe1, 0x7b, 0xfa, 0x3f, 0x6e, 0x1a, 0xcd, 0xfe, 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0xad, - 0xd7, 0xab, 0xd7, 0xbe, 0x1f, 0x3d, 0x6d, 0xf6, 0xe6, 0x5a, 0xad, 0xfa, 0xd3, 0x4d, 0xaf, 0x37, - 0xfa, 0xfe, 0xc7, 0x53, 0xf8, 0xfb, 0xe3, 0x53, 0xff, 0xe7, 0xda, 0x3b, 0x2e, 0x6d, 0x50, 0xad, - 0xde, 0xfc, 0xbb, 0xdb, 0xff, 0xb9, 0x5b, 0xfb, 0xde, 0x79, 0x9a, 0x3e, 0x8e, 0x7e, 0xd7, 0x7e, - 0x54, 0xeb, 0x6f, 0x7b, 0xbd, 0x7a, 0xfd, 0x6d, 0x6d, 0xf2, 0x45, 0xe3, 0xf7, 0xbd, 0x9d, 0xfc, - 0xf7, 0x5d, 0xb7, 0xbb, 0xf2, 0x52, 0xad, 0xfa, 0x53, 0x9d, 0xf1, 0x52, 0x67, 0xf7, 0xbf, 0xdb, - 0xeb, 0xd5, 0xfb, 0x6f, 0xe9, 0xd5, 0x49, 0x1f, 0x27, 0xf8, 0xf7, 0xb7, 0x70, 0xcf, 0xc4, 0xea, - 0xea, 0xb6, 0x72, 0x6e, 0xa3, 0x40, 0x0f, 0x93, 0x1b, 0xb8, 0x38, 0x0d, 0x3c, 0x42, 0x78, 0x84, - 0xf0, 0x08, 0xf7, 0xc6, 0x23, 0xbc, 0x34, 0x1c, 0xd3, 0x08, 0x5c, 0xef, 0x91, 0x8e, 0x05, 0x12, - 0xf4, 0x36, 0xc7, 0x96, 0x13, 0x9c, 0x32, 0xba, 0x97, 0xc7, 0x0c, 0x43, 0xd3, 0x36, 0x0b, 0x5e, - 0xfe, 0xe1, 0x91, 0x7c, 0x8d, 0xab, 0x99, 0xf0, 0xca, 0x24, 0xd3, 0x46, 0xb5, 0x8d, 0x03, 0xde, - 0x79, 0xb8, 0x9b, 0xd6, 0xae, 0x6e, 0x59, 0xae, 0x26, 0xb6, 0xcc, 0x1a, 0x62, 0x49, 0x5b, 0x7c, - 0x93, 0xdb, 0x02, 0xcd, 0xd6, 0x29, 0x36, 0x41, 0x29, 0x8c, 0x0e, 0xdf, 0xa8, 0xc0, 0x37, 0xa8, - 0x50, 0x56, 0xbe, 0x05, 0x62, 0xcb, 0xaf, 0xeb, 0x1c, 0x26, 0x99, 0x32, 0xd3, 0x47, 0x3b, 0x58, - 0x9a, 0x8c, 0x30, 0x66, 0x41, 0x1f, 0xab, 0xd8, 0xfb, 0x83, 0x20, 0x08, 0x79, 0x22, 0xe4, 0xa9, - 0x6d, 0xc5, 0x41, 0x10, 0xfa, 0x62, 0x0a, 0x1c, 0x45, 0x14, 0x92, 0xe2, 0x09, 0xf5, 0x7a, 0x54, - 0xd3, 0x60, 0xd4, 0x9d, 0x68, 0xf4, 0xf8, 0x09, 0xd5, 0xc2, 0xa3, 0xea, 0x64, 0xda, 0x35, 0xde, - 0xd7, 0xaa, 0x93, 0x50, 0xf0, 0x50, 0xf0, 0x1a, 0x72, 0x5a, 0x88, 0x4d, 0x06, 0x22, 0x18, 0x88, - 0x60, 0x94, 0x48, 0xfd, 0x48, 0xa8, 0x21, 0x1e, 0xda, 0x07, 0x39, 0x2d, 0xaf, 0x39, 0x2e, 0xc8, - 0x69, 0x41, 0x4e, 0x0b, 0x72, 0x5a, 0xe4, 0xa9, 0x4d, 0x42, 0xb7, 0xd9, 0xf5, 0xac, 0x5b, 0x86, - 0x70, 0xd9, 0xcc, 0x00, 0x4f, 0xc6, 0x87, 0xab, 0x03, 0x57, 0x07, 0xae, 0x0e, 0x5c, 0x1d, 0x42, - 0x57, 0x27, 0x71, 0x74, 0x58, 0x54, 0xcc, 0x82, 0x9f, 0xd3, 0x66, 0x18, 0xfb, 0x83, 0x33, 0xbe, - 0x47, 0x7e, 0x20, 0xe9, 0x9e, 0x40, 0x7e, 0x20, 0x4c, 0x0e, 0x4c, 0x0e, 0xf2, 0x03, 0x91, 0x1f, - 0xb8, 0xa2, 0xb6, 0x90, 0x1f, 0x38, 0xbf, 0x55, 0x90, 0x1f, 0x98, 0x67, 0xcb, 0x22, 0x3f, 0x30, - 0xe5, 0x16, 0x40, 0x7e, 0x60, 0x59, 0x8c, 0x0e, 0xdf, 0xa8, 0xfb, 0xc0, 0x15, 0xf9, 0x81, 0x11, - 0x8c, 0x7d, 0xc6, 0x8e, 0x37, 0x93, 0xf1, 0xe1, 0xb8, 0xc3, 0x71, 0x87, 0xe3, 0x0e, 0xae, 0x88, - 0x6c, 0xb7, 0x2b, 0x67, 0x7c, 0xaf, 0xbc, 0x49, 0xf6, 0x2d, 0x58, 0x22, 0x86, 0x25, 0x54, 0xdf, - 0x02, 0xcf, 0xd0, 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0xa6, 0xc5, 0xf4, 0xd4, 0x50, 0x79, 0xca, - 0x19, 0x6c, 0x25, 0xe2, 0x98, 0xee, 0xc4, 0xeb, 0xdf, 0x7e, 0xd5, 0xda, 0xad, 0xb3, 0xa3, 0xae, - 0x76, 0x69, 0x38, 0xc6, 0xad, 0x0a, 0x05, 0x5f, 0xbb, 0x70, 0x86, 0xae, 0x77, 0x1f, 0x6d, 0x4f, - 0xed, 0x17, 0xc3, 0x57, 0xda, 0xd0, 0xf5, 0xb4, 0xe0, 0x4e, 0xf5, 0x9c, 0xb9, 0x21, 0xa2, 0x6a, - 0xa5, 0x8e, 0x0a, 0xb4, 0x2b, 0xcf, 0x0d, 0xdc, 0x81, 0x6b, 0x6b, 0xd5, 0x8b, 0xab, 0xda, 0xc2, - 0x5b, 0x74, 0xed, 0x62, 0x74, 0x3e, 0xe1, 0x44, 0x3f, 0x45, 0x96, 0xf4, 0xaf, 0x5f, 0x7b, 0x8e, - 0x16, 0x4d, 0x79, 0xda, 0x69, 0x75, 0xb5, 0x8b, 0xab, 0x87, 0x8e, 0x16, 0xfe, 0x47, 0xd9, 0xca, - 0xf7, 0xb5, 0xf8, 0xad, 0xda, 0xf9, 0x38, 0x1c, 0x2f, 0x34, 0x66, 0x63, 0x36, 0x19, 0x91, 0xb2, - 0x0f, 0xeb, 0xec, 0xc4, 0x6c, 0xe3, 0x30, 0xfb, 0xc4, 0x52, 0x26, 0x63, 0xad, 0xe9, 0xd8, 0x8e, - 0x9d, 0x05, 0x98, 0x80, 0xd3, 0x32, 0x9b, 0x6c, 0xec, 0x1d, 0x38, 0x2d, 0x53, 0xae, 0xce, 0x61, - 0x04, 0x19, 0xd5, 0x0f, 0x9e, 0xc7, 0x70, 0x5c, 0x26, 0x1a, 0x15, 0x35, 0x02, 0x4b, 0x87, 0xe8, - 0x90, 0x4f, 0x5d, 0x04, 0x62, 0xdb, 0xf1, 0x7c, 0xea, 0x50, 0xd8, 0xf5, 0x5b, 0xcf, 0x1d, 0x33, - 0xe6, 0x55, 0xcf, 0xcd, 0xc1, 0x43, 0x24, 0x35, 0x41, 0x24, 0x81, 0x48, 0x02, 0x91, 0x54, 0x3e, - 0x16, 0x82, 0x5a, 0x5d, 0x25, 0x03, 0x13, 0x57, 0x48, 0x7e, 0x56, 0x98, 0x48, 0x2b, 0x26, 0x0b, - 0xa9, 0x2f, 0x76, 0x35, 0x26, 0xa1, 0xce, 0xc4, 0xd4, 0x5a, 0x91, 0x3c, 0x08, 0xab, 0x9a, 0x2b, - 0x07, 0x09, 0xc2, 0xa4, 0xf6, 0x98, 0x49, 0x06, 0x26, 0x79, 0xe1, 0x52, 0x87, 0xc9, 0x04, 0xc6, - 0x60, 0xa0, 0x46, 0x81, 0x7e, 0xef, 0x9a, 0x02, 0x1b, 0x39, 0xe9, 0x1e, 0x31, 0x37, 0x29, 0xf3, - 0xce, 0xe2, 0x68, 0x38, 0xfa, 0xec, 0x64, 0x84, 0x8d, 0x48, 0x9f, 0xe5, 0x9e, 0x98, 0xef, 0x17, - 0x4f, 0xa0, 0x55, 0xdc, 0xd0, 0x48, 0x1a, 0x1c, 0x71, 0xc3, 0x23, 0x6d, 0x80, 0x0a, 0x33, 0x44, - 0x85, 0x19, 0xa4, 0x22, 0x0c, 0x13, 0xaf, 0x81, 0x62, 0x36, 0x54, 0xc9, 0x0d, 0x63, 0x0b, 0x04, - 0x3f, 0x2b, 0x6d, 0xf4, 0x0d, 0x5c, 0x5f, 0xf5, 0xbe, 0x9b, 0x5b, 0xbd, 0x44, 0xcc, 0x75, 0xc6, - 0x56, 0xe6, 0x13, 0xab, 0x3b, 0x26, 0x27, 0x49, 0x9c, 0x59, 0x8d, 0x86, 0xf9, 0xa0, 0xbc, 0xc0, - 0xf2, 0xa3, 0xe8, 0xdf, 0x24, 0xa6, 0xf1, 0x60, 0xd8, 0x82, 0xce, 0xd9, 0xfa, 0xf9, 0x77, 0xc9, - 0x4f, 0x6b, 0x36, 0x1a, 0xf0, 0xd2, 0xe0, 0xa5, 0xc1, 0x4b, 0x83, 0x97, 0x06, 0x2f, 0x4d, 0x46, - 0xda, 0xc6, 0x96, 0x13, 0x34, 0x3b, 0x82, 0x4e, 0x5a, 0x47, 0x60, 0x2a, 0xde, 0xc3, 0x33, 0xcb, - 0x3f, 0x32, 0xea, 0x43, 0x93, 0x3a, 0x5c, 0xb3, 0x32, 0x69, 0x72, 0xd2, 0xe2, 0x40, 0x76, 0x5e, - 0xe9, 0x73, 0x17, 0xab, 0x32, 0x22, 0x75, 0x0e, 0x43, 0x58, 0xcd, 0x2c, 0x6e, 0x29, 0xe3, 0x5b, - 0x71, 0x5b, 0xaa, 0xdd, 0x38, 0x3b, 0xc6, 0xae, 0x92, 0xda, 0x55, 0x6f, 0x76, 0x63, 0x96, 0x3e, - 0x50, 0x3e, 0x50, 0x3e, 0xd7, 0xed, 0x1a, 0x79, 0x4a, 0xdd, 0x8f, 0x02, 0x39, 0x58, 0x3f, 0x9d, - 0x70, 0x97, 0x70, 0x7c, 0x08, 0x31, 0x00, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, - 0x65, 0xa4, 0x0d, 0xe1, 0x16, 0x38, 0x62, 0x3b, 0xe8, 0x88, 0xe9, 0xa6, 0xb2, 0x8d, 0x47, 0x71, - 0x77, 0x2c, 0x9e, 0x76, 0x97, 0x9c, 0x32, 0x84, 0x56, 0xe0, 0x91, 0xc1, 0x23, 0x83, 0x47, 0x06, - 0x8f, 0x4c, 0x48, 0xda, 0x10, 0x5a, 0xc9, 0xfd, 0xb3, 0x2f, 0xa1, 0x95, 0x06, 0x48, 0x70, 0xa1, - 0x9f, 0xbd, 0x09, 0xad, 0x1c, 0x75, 0x1a, 0xd8, 0x55, 0x62, 0xbb, 0x0a, 0xa1, 0x15, 0x20, 0x7a, - 0x20, 0xfa, 0xd7, 0x10, 0xbd, 0xe5, 0x7a, 0x56, 0x20, 0x0a, 0xe6, 0xe3, 0x19, 0x91, 0x24, 0x09, - 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x9f, 0x11, 0xc9, 0x9f, 0x0a, 0x02, 0xf9, - 0x63, 0x00, 0xf9, 0x2d, 0x05, 0xf2, 0xc8, 0x91, 0x04, 0x90, 0x27, 0xde, 0x52, 0xad, 0xe3, 0x36, - 0x36, 0x15, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x7c, 0x39, 0x70, 0xfc, 0x83, 0xe5, 0x05, 0x63, 0xc3, - 0x9e, 0xb6, 0x08, 0x93, 0x83, 0xf3, 0xcb, 0x13, 0x03, 0xa7, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0xa7, - 0x02, 0xa7, 0xae, 0xf4, 0x6d, 0x94, 0x4c, 0x03, 0x3c, 0x13, 0x98, 0x2b, 0xbe, 0x97, 0x3b, 0x07, - 0x56, 0xe7, 0x9a, 0x8b, 0xb7, 0x05, 0xd7, 0x6e, 0x65, 0x0d, 0x4f, 0x05, 0xe7, 0xe4, 0x6e, 0x42, - 0xfe, 0xec, 0xc4, 0x93, 0x66, 0xe3, 0xfd, 0x1f, 0x37, 0x4d, 0xfd, 0x2c, 0x6e, 0x08, 0xde, 0x8c, - 0xfe, 0x4c, 0x1e, 0xcf, 0x37, 0x0a, 0x8f, 0x9b, 0x87, 0x27, 0xcd, 0xc4, 0x53, 0x7f, 0x70, 0x5d, - 0x5b, 0x71, 0xb1, 0x6f, 0xdb, 0x7f, 0xb3, 0x43, 0x08, 0xbc, 0x18, 0x69, 0xec, 0x40, 0x1a, 0xd9, - 0xa5, 0x71, 0x4d, 0x9b, 0xff, 0x6e, 0xad, 0xba, 0xfc, 0x5a, 0xb7, 0xf6, 0xbd, 0x71, 0x70, 0xfc, - 0x54, 0xad, 0xae, 0xf9, 0xcf, 0xbb, 0x75, 0x63, 0x44, 0x1d, 0xf4, 0x37, 0xea, 0xfe, 0x3f, 0x95, - 0xee, 0x8d, 0xde, 0x5c, 0x5b, 0x2b, 0xd3, 0x07, 0xe2, 0x2a, 0xec, 0xdf, 0xdd, 0xfe, 0xcf, 0xdd, - 0xda, 0xf7, 0xce, 0xd3, 0xf4, 0x71, 0xf4, 0xbb, 0xf6, 0xa3, 0x5a, 0x7f, 0xdb, 0xeb, 0xd5, 0xeb, - 0x6f, 0x6b, 0x93, 0x1b, 0x10, 0xbf, 0xef, 0xed, 0xe4, 0xbf, 0xef, 0xba, 0xdd, 0x95, 0x97, 0x6a, - 0xd5, 0x9f, 0xea, 0xbb, 0xa8, 0x96, 0xc0, 0xae, 0xbc, 0xb8, 0x85, 0x3e, 0x5a, 0x7e, 0x70, 0x1e, - 0x04, 0x9e, 0x8c, 0x6b, 0x7a, 0x69, 0x39, 0x1f, 0xec, 0xa8, 0x64, 0x91, 0x10, 0x91, 0x58, 0xb9, - 0x34, 0xbe, 0xcd, 0xcd, 0xd8, 0x3c, 0x6d, 0xb7, 0x3b, 0x27, 0xed, 0x76, 0xe3, 0xe4, 0xe8, 0xa4, - 0x71, 0x76, 0x7c, 0xdc, 0xec, 0x34, 0x25, 0xa2, 0x2b, 0x7f, 0x7a, 0xa6, 0xf2, 0x94, 0xf9, 0xcb, - 0x63, 0xa5, 0xab, 0x39, 0x63, 0xdb, 0x06, 0x1f, 0x07, 0x3e, 0x8e, 0x9b, 0x8f, 0xb3, 0x2d, 0xe7, - 0x6f, 0xdd, 0x76, 0x07, 0x92, 0x45, 0xc9, 0xd6, 0xcc, 0x0d, 0x56, 0x0e, 0xac, 0x1c, 0x58, 0x39, - 0xb0, 0x72, 0x60, 0xe5, 0xc0, 0xca, 0x81, 0x95, 0x03, 0x0f, 0x00, 0x56, 0x0e, 0xac, 0x1c, 0x58, - 0x39, 0xb0, 0x72, 0x60, 0xe5, 0xc0, 0xca, 0x81, 0x95, 0x03, 0xc7, 0xb2, 0xd5, 0x1c, 0x8b, 0xe7, - 0x8e, 0x03, 0xe5, 0xe9, 0x96, 0x29, 0x4f, 0xb1, 0xcc, 0xa6, 0x06, 0xc3, 0x02, 0x86, 0x05, 0x0c, - 0x0b, 0x18, 0x16, 0x30, 0x2c, 0x38, 0x9f, 0xb3, 0x7d, 0x70, 0x0e, 0xe7, 0x73, 0x24, 0x2f, 0x00, - 0xe7, 0x73, 0xb8, 0xb7, 0x54, 0xeb, 0x18, 0x25, 0xcc, 0xc5, 0x36, 0x15, 0xb0, 0x2a, 0xb0, 0xea, - 0x4e, 0x60, 0xd5, 0xad, 0xea, 0x76, 0x7b, 0x3e, 0xbe, 0x0d, 0x3d, 0x60, 0x65, 0xb2, 0xfa, 0x23, - 0x42, 0x78, 0xfa, 0x30, 0x74, 0xe2, 0x87, 0xdd, 0xa8, 0x81, 0xda, 0xd0, 0x18, 0x28, 0x7f, 0xf9, - 0x85, 0xf8, 0xb9, 0x3f, 0xfe, 0xba, 0xf2, 0x9e, 0xf9, 0xd7, 0xa2, 0x97, 0x46, 0x5d, 0x6b, 0xf4, - 0xd0, 0x89, 0x1f, 0xc6, 0xdc, 0x74, 0xfc, 0xee, 0xe4, 0xf9, 0xe1, 0x83, 0xe7, 0x8d, 0xa2, 0x5f, - 0xfa, 0xad, 0xe7, 0x8e, 0x47, 0x87, 0xac, 0xad, 0xc8, 0x93, 0xef, 0xfb, 0x5e, 0xf9, 0x03, 0xcf, - 0x1a, 0xc5, 0x62, 0x5a, 0x39, 0x37, 0x4d, 0x2b, 0x7c, 0x6c, 0xd8, 0xda, 0xe7, 0xeb, 0xeb, 0x2b, - 0xcd, 0x34, 0x02, 0x43, 0x1b, 0xba, 0x9e, 0x76, 0x71, 0xf5, 0xd0, 0xd1, 0x66, 0xdf, 0x54, 0x88, - 0x5d, 0x68, 0x82, 0x5d, 0x00, 0xbb, 0x00, 0x76, 0x01, 0xec, 0x42, 0x6a, 0xb5, 0x66, 0x09, 0x65, - 0xae, 0x16, 0x90, 0x56, 0xb7, 0x22, 0xe8, 0xe2, 0xe9, 0x75, 0xcf, 0x59, 0x8f, 0xdf, 0x5c, 0x6f, - 0x62, 0x36, 0x5c, 0x67, 0xd9, 0x60, 0x1c, 0x68, 0xbe, 0x0a, 0x7c, 0x2d, 0xb8, 0x53, 0x5a, 0x7c, - 0xb9, 0x5a, 0x78, 0xb9, 0x5a, 0x74, 0xb9, 0x3d, 0x47, 0x36, 0x60, 0x2b, 0x44, 0x5e, 0x8b, 0x9b, - 0x99, 0x22, 0xcc, 0x4d, 0x61, 0x66, 0xa7, 0x28, 0xf3, 0x53, 0xb8, 0x19, 0x2a, 0xdc, 0x1c, 0x15, - 0x69, 0x96, 0x84, 0x31, 0xbe, 0x90, 0xbc, 0x8a, 0x91, 0xe1, 0x2b, 0xd2, 0x2a, 0x9a, 0x76, 0xb8, - 0xe2, 0xde, 0x9f, 0x09, 0xce, 0x29, 0x9a, 0x86, 0x28, 0x83, 0x56, 0x5f, 0x59, 0xd9, 0x42, 0xd2, - 0x12, 0x57, 0xd6, 0xf8, 0xb4, 0x80, 0xb9, 0x8b, 0x4a, 0x8c, 0x4a, 0x2e, 0x60, 0x6f, 0xd2, 0x15, - 0xa7, 0x3f, 0x7d, 0xd1, 0x19, 0x9f, 0x0e, 0xf6, 0x48, 0x8a, 0x3b, 0x90, 0xe2, 0xc2, 0xa4, 0x18, - 0x69, 0x8e, 0x79, 0x54, 0xe0, 0xf6, 0xa6, 0x3b, 0x16, 0xa4, 0xd6, 0x90, 0xce, 0x59, 0x2e, 0x96, - 0x6a, 0xcb, 0x22, 0x3b, 0x7d, 0xae, 0xc8, 0x8e, 0x4c, 0x28, 0xaf, 0xe2, 0x0f, 0xee, 0xd4, 0xbd, - 0x31, 0x32, 0x82, 0xbb, 0x49, 0x08, 0x66, 0xa4, 0x9c, 0x49, 0x14, 0x44, 0x9f, 0x8b, 0xb1, 0xac, - 0x7b, 0x78, 0xb8, 0x18, 0x86, 0x59, 0x08, 0xc0, 0x44, 0xa1, 0x97, 0x59, 0xd0, 0xe5, 0x95, 0x70, - 0xcb, 0x9b, 0xed, 0x58, 0x6d, 0x06, 0x07, 0xa8, 0x92, 0xdc, 0x32, 0x3d, 0xf0, 0x8c, 0xc1, 0xdf, - 0x96, 0x73, 0xcb, 0xb6, 0xda, 0x33, 0xf7, 0x66, 0x75, 0x4e, 0xa6, 0x3d, 0xcc, 0x1b, 0x51, 0x62, - 0xa7, 0xf8, 0x24, 0x28, 0x3d, 0x31, 0x0a, 0x4f, 0x8a, 0xb2, 0x13, 0xa7, 0xe8, 0xc4, 0x29, 0x39, - 0x49, 0x0a, 0x6e, 0xbb, 0xb2, 0x11, 0xb8, 0x23, 0x40, 0x95, 0xc1, 0x54, 0xe2, 0x85, 0x32, 0x12, - 0x64, 0xf2, 0x01, 0x10, 0x78, 0x2f, 0xbf, 0xfa, 0x94, 0x56, 0xa3, 0x85, 0xa9, 0xd3, 0xc2, 0xd4, - 0x6a, 0x11, 0xea, 0x55, 0x08, 0xd2, 0xec, 0x4a, 0xe0, 0x7d, 0xda, 0xb5, 0x49, 0x37, 0xd5, 0xc0, - 0x53, 0xf1, 0x1a, 0x09, 0x07, 0xde, 0xd7, 0x5c, 0x83, 0x58, 0xe0, 0x5d, 0xae, 0x97, 0x54, 0x32, - 0x69, 0x43, 0x86, 0x7f, 0xe9, 0x23, 0x09, 0x60, 0xdb, 0x4c, 0x5f, 0x61, 0x26, 0xb0, 0x28, 0x53, - 0x58, 0xb8, 0x49, 0x2c, 0xdc, 0x34, 0x16, 0x69, 0x22, 0x65, 0x4c, 0xa5, 0x90, 0xc9, 0x4c, 0x6e, - 0x64, 0x71, 0x49, 0x00, 0x52, 0x27, 0xe3, 0x96, 0x55, 0xaf, 0xe0, 0x91, 0x18, 0xe1, 0x93, 0x72, - 0xd3, 0x9f, 0x02, 0x22, 0x87, 0x45, 0x9c, 0x9c, 0x4b, 0x26, 0x2f, 0xa8, 0x55, 0x75, 0x32, 0x7f, - 0xd1, 0x87, 0x9e, 0x66, 0xa2, 0x55, 0xd4, 0xe1, 0x27, 0x61, 0xad, 0xb5, 0xb8, 0xf5, 0x0a, 0x38, - 0x61, 0xb7, 0xb2, 0xf5, 0xc4, 0x3b, 0x61, 0x61, 0xf3, 0x15, 0x64, 0x98, 0xe5, 0x67, 0xdb, 0xa9, - 0xe2, 0x5c, 0xd2, 0x27, 0xf4, 0x92, 0x79, 0x0b, 0x3b, 0xa9, 0x27, 0xb7, 0x61, 0x04, 0x96, 0xb0, - 0x12, 0x45, 0xcc, 0x66, 0x91, 0x51, 0x79, 0xfa, 0x63, 0xf9, 0x02, 0x80, 0xdb, 0x81, 0xdb, 0x81, - 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x85, 0xa4, 0x35, 0xb4, 0x9a, 0x9e, 0x1a, 0x16, 0x91, 0xb9, 0x7f, - 0x22, 0x5b, 0xe6, 0xf2, 0x2e, 0xcd, 0x99, 0x6c, 0x27, 0xbc, 0x3d, 0xf0, 0xd4, 0xe0, 0xa9, 0x15, - 0x3f, 0xc3, 0xae, 0x15, 0xd9, 0x28, 0x32, 0x43, 0x6f, 0x35, 0x57, 0x8c, 0x35, 0x69, 0x8f, 0x7f, - 0x83, 0x70, 0x96, 0xa2, 0xf4, 0x03, 0x23, 0x50, 0x72, 0xc9, 0x29, 0x93, 0xe9, 0x76, 0x2c, 0x37, - 0xa5, 0x85, 0xdc, 0x94, 0xad, 0x71, 0xec, 0x91, 0x9b, 0x82, 0xdc, 0x94, 0xd7, 0x6e, 0x18, 0x72, - 0x53, 0x44, 0xae, 0x00, 0xb9, 0x29, 0xe0, 0xb8, 0xc0, 0x71, 0x81, 0xe3, 0x02, 0xc7, 0x05, 0x8e, - 0x2b, 0xbf, 0xb4, 0x22, 0x37, 0x85, 0xeb, 0x07, 0xb9, 0x29, 0xb2, 0xf3, 0x23, 0x3d, 0x40, 0x58, - 0x6b, 0x2d, 0x6e, 0x3d, 0xe4, 0xa6, 0x60, 0xf3, 0x69, 0xc8, 0x4d, 0x29, 0xfd, 0xf7, 0x41, 0xea, - 0x04, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x9f, 0xb4, 0x22, 0x75, 0xa2, - 0xe8, 0xd4, 0x09, 0x04, 0x2b, 0x5e, 0xd6, 0x31, 0xfb, 0x1d, 0xd9, 0x9f, 0x04, 0x94, 0x51, 0xdd, - 0x89, 0x7f, 0xc7, 0xed, 0x45, 0x75, 0x27, 0xb1, 0x3a, 0x43, 0x93, 0x6f, 0x1a, 0x78, 0xe3, 0x41, - 0xe0, 0xc4, 0xa6, 0xe6, 0x62, 0x3a, 0xf7, 0x97, 0x4f, 0x73, 0x57, 0xfe, 0xe5, 0x62, 0xf4, 0xd0, - 0xf9, 0x72, 0x3e, 0xb9, 0xde, 0x2f, 0x9f, 0x3d, 0x6f, 0xf4, 0x7b, 0x78, 0xa5, 0x5f, 0x92, 0x77, - 0xff, 0x35, 0xbd, 0xd0, 0x3d, 0x2e, 0x49, 0xc5, 0x9b, 0xc5, 0x22, 0x92, 0xbd, 0x22, 0x56, 0x78, - 0xaa, 0x85, 0xc2, 0x53, 0xa5, 0xc1, 0x4c, 0x28, 0x3c, 0xb5, 0xbf, 0xe6, 0x94, 0xbd, 0xf0, 0x94, - 0x31, 0x18, 0xa8, 0x51, 0xa0, 0xdf, 0xbb, 0xa6, 0x60, 0x82, 0xdf, 0xfc, 0xa4, 0xec, 0x2d, 0xa9, - 0xe4, 0xf2, 0x47, 0x2a, 0x11, 0x07, 0xcd, 0xeb, 0x67, 0xf6, 0xd1, 0x89, 0xbb, 0xac, 0x24, 0x1e, - 0xd2, 0x22, 0x77, 0x8e, 0xa4, 0x43, 0x5a, 0x64, 0x69, 0x49, 0xb8, 0x44, 0xda, 0xbe, 0xba, 0xae, - 0xad, 0x0c, 0x47, 0xb0, 0x17, 0x77, 0xb3, 0x89, 0x33, 0x02, 0xab, 0x8e, 0x84, 0xf9, 0xa0, 0xbc, - 0xc0, 0xf2, 0xa3, 0xec, 0xd0, 0x09, 0x08, 0x7f, 0x10, 0xe8, 0x5f, 0x36, 0xf3, 0x29, 0xd6, 0xcf, - 0xbf, 0x4b, 0xee, 0x45, 0xb3, 0xd1, 0x80, 0x73, 0x01, 0xe7, 0x02, 0xce, 0x05, 0x9c, 0x0b, 0x38, - 0x17, 0x32, 0xd2, 0x36, 0xb6, 0x9c, 0xa0, 0xd9, 0x11, 0xf4, 0x2d, 0x3a, 0x02, 0x53, 0xc9, 0x66, - 0x88, 0x0a, 0xc6, 0x63, 0x8b, 0xc8, 0x08, 0x4d, 0xd2, 0xf1, 0x9a, 0xc2, 0x79, 0x03, 0x45, 0x27, - 0xe1, 0x15, 0x97, 0x7c, 0x27, 0x98, 0xf1, 0x59, 0x48, 0xa6, 0x67, 0xb2, 0xa5, 0xda, 0x8d, 0xb3, - 0x63, 0xec, 0x2a, 0xa9, 0x5d, 0xb5, 0x23, 0x99, 0x0a, 0x7d, 0x80, 0xd3, 0x95, 0x4d, 0x35, 0x18, - 0x7b, 0x5e, 0x08, 0x0b, 0xa7, 0xe7, 0x18, 0x05, 0x1b, 0x2d, 0x2c, 0xcf, 0x0c, 0x88, 0x05, 0x88, - 0x05, 0x88, 0x05, 0x88, 0x05, 0x88, 0x25, 0x7c, 0x26, 0x4f, 0xf0, 0x2c, 0x1e, 0x10, 0x16, 0x8b, - 0x3b, 0xdc, 0x80, 0x2f, 0x0c, 0x84, 0x45, 0xbb, 0xa5, 0x5a, 0xc7, 0x00, 0x58, 0x00, 0x58, 0x00, - 0x58, 0x79, 0x37, 0xd5, 0xc8, 0x53, 0xea, 0x7e, 0x14, 0xc8, 0xe1, 0xaa, 0xe9, 0x84, 0xbb, 0x14, - 0xdf, 0x0b, 0xfd, 0x62, 0x04, 0xf8, 0x80, 0x3e, 0x81, 0x3e, 0x81, 0x3e, 0x81, 0x3e, 0x65, 0xa4, - 0x0d, 0xd9, 0x43, 0x65, 0xf2, 0x1f, 0x74, 0x53, 0xd9, 0xc6, 0xa3, 0xb8, 0x17, 0x11, 0x4f, 0xbb, - 0x4b, 0xbe, 0x04, 0x32, 0x85, 0xe0, 0x48, 0xc0, 0x91, 0x80, 0x23, 0x01, 0x47, 0x42, 0x48, 0xda, - 0x90, 0x29, 0x94, 0xfb, 0x07, 0x3c, 0x36, 0xcf, 0xbc, 0xe0, 0xb1, 0x45, 0xb6, 0x54, 0x91, 0x3c, - 0xf6, 0x51, 0xa7, 0x81, 0x5d, 0x25, 0xb6, 0xab, 0x40, 0x64, 0xef, 0x30, 0x10, 0x95, 0xce, 0x10, - 0x92, 0xca, 0x0c, 0xc2, 0x51, 0x15, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x0d, 0x79, - 0x54, 0x04, 0xaa, 0x11, 0x79, 0x54, 0xdb, 0x8a, 0x3f, 0x71, 0x52, 0x05, 0xf8, 0x93, 0x78, 0x4b, - 0x89, 0xd7, 0x22, 0x07, 0xfc, 0x04, 0xfc, 0xdc, 0x41, 0xf8, 0xf9, 0x60, 0x79, 0xc1, 0xd8, 0xb0, - 0xf5, 0xb8, 0xf4, 0xa0, 0x1c, 0x0a, 0x5d, 0x9e, 0x18, 0xf0, 0x0a, 0xf0, 0x0a, 0xf0, 0x0a, 0xf0, - 0x0a, 0xf0, 0x2a, 0x96, 0x36, 0x6b, 0x24, 0xa4, 0x1b, 0xe7, 0xf5, 0x63, 0xf3, 0x4c, 0x60, 0xae, - 0xf8, 0x5e, 0xee, 0x1c, 0xc6, 0x9a, 0xad, 0xdc, 0x43, 0x5b, 0x70, 0xed, 0x56, 0xd6, 0xf0, 0x54, - 0xb6, 0x44, 0x7b, 0xa0, 0x3c, 0x47, 0xbc, 0xfd, 0x57, 0xa5, 0x5a, 0xbd, 0x69, 0xe8, 0x67, 0xfd, - 0x1f, 0x37, 0x4d, 0xfd, 0xac, 0x3f, 0x79, 0xd8, 0x8c, 0xfe, 0x4c, 0x1e, 0xb7, 0x6e, 0x1a, 0x7a, - 0x7b, 0xfa, 0xf8, 0xf8, 0xa6, 0xa1, 0x1f, 0xf7, 0x6b, 0xbd, 0x5e, 0xbd, 0xf6, 0xfd, 0xe8, 0x29, - 0xfd, 0x07, 0xab, 0x3f, 0xdd, 0xf4, 0x7a, 0xa3, 0xef, 0x7f, 0x3c, 0x85, 0xbf, 0x3f, 0x3e, 0xf5, - 0x7f, 0xae, 0xbd, 0xab, 0xec, 0x5a, 0x67, 0x9c, 0x83, 0x1d, 0x96, 0xc6, 0x0e, 0xa4, 0x91, 0x5d, - 0x1a, 0xbb, 0x3f, 0x42, 0x99, 0x31, 0xf4, 0xe1, 0xb9, 0xfe, 0x5b, 0xff, 0x7b, 0xe3, 0xa0, 0xfd, - 0x54, 0xeb, 0xd6, 0xaa, 0xcb, 0xaf, 0x75, 0x6b, 0xdf, 0x1b, 0x07, 0xc7, 0x4f, 0xd5, 0xea, 0x9a, - 0xff, 0xbc, 0x5b, 0x37, 0x46, 0xed, 0x47, 0xb5, 0x5a, 0x8d, 0xe5, 0x70, 0x41, 0x36, 0x6f, 0x1a, - 0xcd, 0xfe, 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0x22, 0xdd, 0x1b, 0xbd, 0xb9, 0xb6, 0x56, 0xa6, 0x0f, - 0xc4, 0x55, 0xd8, 0xbf, 0xbb, 0xfd, 0x9f, 0xbb, 0xb5, 0xef, 0x9d, 0xa7, 0xe9, 0xe3, 0xe8, 0x77, - 0xed, 0x47, 0xb5, 0xfe, 0xb6, 0xd7, 0xab, 0xd7, 0xdf, 0xd6, 0x26, 0x37, 0x20, 0x7e, 0xdf, 0xdb, - 0xc9, 0x7f, 0xdf, 0x75, 0xbb, 0x2b, 0x2f, 0xd5, 0xaa, 0x3f, 0xd5, 0x77, 0x51, 0x2d, 0x6d, 0x3b, - 0x29, 0xc0, 0xec, 0x96, 0x7e, 0xb4, 0xfc, 0xe0, 0x3c, 0x08, 0x84, 0x3a, 0x83, 0x5f, 0x5a, 0xce, - 0x07, 0x3b, 0xaa, 0x77, 0x28, 0xc4, 0x7f, 0x55, 0x2e, 0x8d, 0x6f, 0x73, 0x33, 0x36, 0x4f, 0xdb, - 0xed, 0xce, 0x49, 0xbb, 0xdd, 0x38, 0x39, 0x3a, 0x69, 0x9c, 0x1d, 0x1f, 0x37, 0x3b, 0x4d, 0x89, - 0xa0, 0xc0, 0x9f, 0x9e, 0xa9, 0x3c, 0x65, 0xfe, 0xf2, 0x58, 0xe9, 0x6a, 0xce, 0xd8, 0xb6, 0x41, - 0x23, 0x3d, 0x4b, 0x23, 0xd9, 0x96, 0xf3, 0xb7, 0x6e, 0xbb, 0x03, 0xc9, 0x42, 0x9c, 0x6b, 0xe6, - 0x06, 0x99, 0x04, 0x32, 0x09, 0x64, 0x12, 0xc8, 0x24, 0x90, 0x49, 0x20, 0x93, 0x40, 0x26, 0x01, - 0xbe, 0x82, 0x4c, 0x02, 0x99, 0x04, 0x32, 0x09, 0x64, 0x12, 0xc8, 0x24, 0x90, 0x49, 0x5b, 0x4c, - 0x26, 0x6d, 0x35, 0x35, 0xe0, 0xb9, 0xe3, 0x40, 0x79, 0xba, 0x65, 0xca, 0x33, 0x03, 0xb3, 0xa9, - 0x41, 0x0c, 0x80, 0x18, 0x00, 0x31, 0x00, 0x62, 0x00, 0xc4, 0x00, 0x92, 0xf8, 0xb7, 0x0f, 0x85, - 0x20, 0x89, 0x5f, 0xf2, 0x02, 0x90, 0xc4, 0xcf, 0xbd, 0xa5, 0x50, 0x0c, 0x15, 0x49, 0xfc, 0x7b, - 0x03, 0xb1, 0xb6, 0xaa, 0x0d, 0xf4, 0xf9, 0xf8, 0x36, 0x74, 0xdc, 0x94, 0xc9, 0x6a, 0x46, 0x85, - 0x60, 0xe0, 0x61, 0xe8, 0x7b, 0x0e, 0xbb, 0x51, 0x8b, 0xc6, 0xa1, 0x31, 0x50, 0xfe, 0xf2, 0x0b, - 0xf1, 0x73, 0x7f, 0xfc, 0x75, 0xe5, 0x3d, 0xf3, 0xaf, 0x45, 0x2f, 0x8d, 0xba, 0xd6, 0xe8, 0xa1, - 0x13, 0x3f, 0x8c, 0x99, 0xc0, 0xf8, 0xdd, 0xc9, 0xf3, 0xc3, 0x07, 0xcf, 0x1b, 0x45, 0xbf, 0xf4, - 0x5b, 0xcf, 0x1d, 0x8f, 0x0e, 0x39, 0x5b, 0xf4, 0x27, 0x5f, 0xf7, 0xbd, 0xf2, 0x07, 0x9e, 0x35, - 0x0a, 0xd5, 0x5b, 0xf8, 0xad, 0xcf, 0x4d, 0xd3, 0x0a, 0x1f, 0x1b, 0xb6, 0xf6, 0xf9, 0xfa, 0xfa, - 0x4a, 0x33, 0x8d, 0xc0, 0xd0, 0x86, 0xae, 0xa7, 0x5d, 0x5c, 0x3d, 0x74, 0xb4, 0xd9, 0x17, 0x15, - 0xc2, 0xc4, 0x4d, 0x60, 0x62, 0x60, 0x62, 0x60, 0x62, 0x60, 0xe2, 0xd4, 0x6a, 0xcd, 0x12, 0xca, - 0x6e, 0x2b, 0x20, 0x87, 0x69, 0x45, 0xd0, 0xc5, 0x73, 0x99, 0x9e, 0xb3, 0x1e, 0xbf, 0xb9, 0xde, - 0xc4, 0x6c, 0xb8, 0xce, 0xb2, 0xc1, 0x38, 0xd0, 0x7c, 0x15, 0xf8, 0x5a, 0x70, 0xa7, 0xb4, 0xf8, - 0x72, 0xb5, 0xf0, 0x72, 0xb5, 0xe8, 0x72, 0x7b, 0x8e, 0x6c, 0x74, 0x4c, 0x88, 0x72, 0x15, 0x37, - 0x33, 0x45, 0x98, 0x9b, 0xc2, 0xcc, 0x4e, 0x51, 0xe6, 0xa7, 0x70, 0x33, 0x54, 0xb8, 0x39, 0x2a, - 0xd2, 0x2c, 0x09, 0x23, 0x53, 0x21, 0x79, 0x15, 0xa3, 0x70, 0x57, 0xa4, 0x55, 0x34, 0xc7, 0x6b, - 0xc5, 0xbd, 0x3f, 0x13, 0x9c, 0x53, 0x34, 0xe7, 0x4b, 0x06, 0xac, 0xbe, 0xb2, 0xb2, 0x85, 0xe4, - 0x80, 0xad, 0xac, 0xf1, 0x69, 0x01, 0x73, 0x17, 0x95, 0x85, 0x92, 0x5c, 0xc0, 0xde, 0xe4, 0x86, - 0xc9, 0x30, 0x6c, 0x05, 0xe9, 0xe5, 0x72, 0x48, 0x71, 0x07, 0x52, 0x5c, 0x98, 0x14, 0x23, 0xa7, - 0x2c, 0x8f, 0x0a, 0xdc, 0xde, 0xdc, 0xb2, 0x82, 0xd4, 0x1a, 0x72, 0xe7, 0xca, 0xc5, 0x52, 0x6d, - 0x59, 0x60, 0xa7, 0xcf, 0x15, 0xd8, 0x71, 0x1c, 0x37, 0x30, 0x62, 0x96, 0x87, 0xcf, 0x18, 0x56, - 0xfc, 0xc1, 0x9d, 0xba, 0x37, 0x46, 0x46, 0x70, 0x37, 0x89, 0xc0, 0x8c, 0x94, 0x33, 0x88, 0xa8, - 0x13, 0x7d, 0x2e, 0xc4, 0xb2, 0xee, 0xe1, 0xe1, 0x62, 0x14, 0x66, 0x21, 0xfe, 0x12, 0x45, 0x5e, - 0x66, 0x31, 0x97, 0x97, 0xa3, 0x2d, 0x6f, 0xb6, 0x63, 0xb1, 0x19, 0xfc, 0x1f, 0xc1, 0x94, 0x4b, - 0xf1, 0x54, 0x4b, 0x66, 0xbe, 0x8f, 0x9d, 0xdf, 0x93, 0xe0, 0xf3, 0xc4, 0xf8, 0x3b, 0x29, 0xbe, - 0x4e, 0x9c, 0x9f, 0x13, 0xe7, 0xe3, 0x24, 0xf9, 0xb7, 0xed, 0xca, 0x44, 0x60, 0xe7, 0xd3, 0x12, - 0x69, 0xb1, 0x95, 0x31, 0xf4, 0xd4, 0x90, 0x53, 0x5e, 0xa6, 0x10, 0xec, 0x84, 0x71, 0x8e, 0xab, - 0xd8, 0xe6, 0xd6, 0xeb, 0x87, 0x13, 0x8b, 0x7b, 0xb8, 0xaa, 0x9b, 0xb7, 0xc5, 0x36, 0xbe, 0x29, - 0xf1, 0x0e, 0x0d, 0x95, 0x92, 0x84, 0xe5, 0xe3, 0xad, 0xf1, 0xc1, 0x5f, 0xd3, 0xa3, 0x90, 0x1a, - 0x1e, 0xbc, 0x35, 0x3b, 0xa8, 0x77, 0x12, 0xb3, 0x53, 0x5e, 0xa4, 0x33, 0xce, 0xa0, 0x4d, 0x2b, - 0x7e, 0xe0, 0x8d, 0x07, 0x81, 0x13, 0xab, 0xed, 0x8b, 0xe9, 0x15, 0x7d, 0xf9, 0x34, 0x77, 0x79, - 0x5f, 0x2e, 0x46, 0x0f, 0x9d, 0x2f, 0xe7, 0x93, 0x8b, 0xfa, 0xf2, 0xd9, 0xf3, 0x46, 0xbf, 0x47, - 0x97, 0xf3, 0xa6, 0x9c, 0xfa, 0x89, 0x66, 0x24, 0xa2, 0x7d, 0x59, 0x51, 0xdf, 0x02, 0xcf, 0xd0, - 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0x5a, 0xeb, 0x5b, 0xf1, 0xd4, 0x50, 0x79, 0xca, 0x19, 0xd0, - 0x07, 0x70, 0x18, 0x04, 0x67, 0xea, 0x1a, 0x5c, 0xff, 0xf6, 0xab, 0x76, 0x7c, 0x72, 0x76, 0xaa, - 0xe9, 0xda, 0xe7, 0x38, 0xe5, 0xe1, 0x3a, 0x52, 0xf7, 0xda, 0xb5, 0x32, 0xc7, 0x8e, 0x69, 0x38, - 0x83, 0x47, 0xed, 0xca, 0x73, 0x03, 0x77, 0xe0, 0xda, 0x3d, 0xa7, 0xfa, 0xf9, 0xfa, 0xfa, 0xaa, - 0xa6, 0x7d, 0x56, 0x9e, 0x6f, 0xb9, 0x8e, 0x76, 0x34, 0x4d, 0xbb, 0x6b, 0x6b, 0x86, 0x63, 0x46, - 0xe9, 0x14, 0x1c, 0x62, 0xc1, 0xec, 0x8c, 0xcf, 0x3b, 0xe1, 0xb3, 0x45, 0x64, 0xf2, 0xfa, 0xa4, - 0xfc, 0xef, 0x05, 0xbf, 0x9b, 0x7e, 0x95, 0xcb, 0xee, 0x11, 0xbd, 0x29, 0x17, 0x09, 0x49, 0xa5, - 0xbf, 0x98, 0xec, 0xa9, 0xb8, 0x1d, 0xa5, 0xd9, 0x3f, 0xf9, 0x57, 0x39, 0xdf, 0x08, 0x39, 0x57, - 0x75, 0xea, 0x67, 0xe7, 0x66, 0x32, 0x68, 0x1d, 0x69, 0x7a, 0xc7, 0x59, 0xc4, 0x51, 0xa6, 0x75, - 0x8c, 0xf3, 0x2e, 0x2d, 0xed, 0x31, 0x03, 0x1a, 0x49, 0x2f, 0xee, 0xd8, 0x00, 0x91, 0x31, 0x7d, - 0xe1, 0x20, 0xc0, 0xc5, 0x95, 0x16, 0xce, 0xa5, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0xca, - 0x6b, 0xec, 0x45, 0xaa, 0x32, 0x34, 0x5f, 0x3d, 0x87, 0xfc, 0x5c, 0x00, 0x71, 0xfe, 0x3f, 0x39, - 0x41, 0xcb, 0x41, 0xc8, 0xb2, 0x11, 0xb0, 0x5c, 0x3e, 0x1e, 0x3b, 0xc1, 0xca, 0xee, 0xd0, 0x71, - 0x12, 0xa8, 0xe5, 0x02, 0x67, 0xd4, 0xf9, 0xf0, 0x95, 0xc8, 0xd3, 0x20, 0xdf, 0x51, 0x49, 0x60, - 0x28, 0x1c, 0x9d, 0x78, 0xad, 0x97, 0x14, 0xdc, 0x07, 0x67, 0x60, 0xbb, 0xbe, 0xe5, 0xdc, 0x86, - 0x0a, 0x2d, 0x30, 0x2c, 0x47, 0x79, 0x91, 0x2f, 0x1e, 0xe5, 0xaf, 0x47, 0x2c, 0x84, 0xaf, 0xdd, - 0x19, 0x8e, 0x69, 0x2b, 0x53, 0xfb, 0xfa, 0xa8, 0x05, 0x77, 0x96, 0xdf, 0x73, 0x2e, 0xae, 0x66, - 0x29, 0xed, 0xd4, 0xd7, 0xc7, 0x73, 0xe4, 0x89, 0x2d, 0x36, 0xc5, 0x19, 0x93, 0x62, 0x8f, 0x45, - 0x49, 0xc2, 0x5e, 0xd6, 0xd8, 0x53, 0x31, 0x98, 0x97, 0x29, 0xd6, 0x54, 0x6e, 0xe6, 0x9e, 0x91, - 0xdf, 0x12, 0xe0, 0xb9, 0xf8, 0xf8, 0xae, 0xad, 0xe4, 0xbd, 0xa4, 0x14, 0x41, 0x11, 0x3c, 0x98, - 0xb8, 0x6e, 0xd8, 0x56, 0x5e, 0x8c, 0x47, 0xef, 0xf0, 0x8d, 0xda, 0xdf, 0xed, 0x38, 0x44, 0xc1, - 0x8c, 0x53, 0x3f, 0x2f, 0x2d, 0x41, 0xcb, 0x1f, 0x4a, 0xf2, 0x86, 0x04, 0x8a, 0x28, 0x7d, 0x7c, - 0x2d, 0x9f, 0x3c, 0x67, 0x5f, 0xeb, 0x6c, 0x9f, 0xcc, 0xe8, 0x4d, 0x50, 0xed, 0x0a, 0x89, 0xdd, - 0x90, 0x6d, 0x41, 0xd2, 0xdf, 0xce, 0x0c, 0xb7, 0xb2, 0x32, 0x98, 0xa2, 0x98, 0x6c, 0xb7, 0x30, - 0xf1, 0x4d, 0xe2, 0x71, 0x32, 0x2e, 0x66, 0x3e, 0x88, 0x96, 0x1b, 0x8a, 0x51, 0x40, 0x2e, 0x32, - 0x68, 0x45, 0xe5, 0x39, 0x91, 0x43, 0x25, 0x72, 0xb7, 0x87, 0x12, 0xfa, 0xc8, 0x2a, 0x9f, 0xbc, - 0xac, 0x4f, 0xc5, 0x1c, 0x4f, 0x8e, 0x87, 0xea, 0xa6, 0x0a, 0xd4, 0x20, 0xd0, 0x03, 0xcf, 0x70, - 0xfc, 0xfb, 0x49, 0x11, 0xac, 0x9c, 0xcb, 0x3e, 0xdd, 0x87, 0xcf, 0x4f, 0x91, 0x73, 0xd5, 0xde, - 0xab, 0xa1, 0x31, 0xb6, 0x03, 0x12, 0x24, 0x55, 0x69, 0x56, 0x0a, 0xf5, 0x2d, 0x68, 0xf2, 0x97, - 0xc9, 0xb8, 0x20, 0x4a, 0xee, 0x87, 0x9c, 0xeb, 0xa1, 0x86, 0x74, 0x6c, 0x5c, 0x0e, 0x1b, 0x3e, - 0xe3, 0xe0, 0x6a, 0x8a, 0x8d, 0xe6, 0x92, 0xe5, 0xf3, 0x2e, 0x94, 0x30, 0x3d, 0x6a, 0x51, 0x6c, - 0xb7, 0x58, 0x36, 0x09, 0xb2, 0x73, 0x89, 0x6b, 0x90, 0x12, 0xb2, 0xfd, 0x1c, 0x35, 0x44, 0x93, - 0x82, 0x8e, 0xd4, 0xc4, 0x34, 0x77, 0xb9, 0x46, 0xbe, 0x72, 0x8c, 0x84, 0x94, 0x25, 0x4b, 0x8d, - 0xce, 0x64, 0xc9, 0xda, 0xad, 0xb3, 0xf6, 0x59, 0xe7, 0xa4, 0x75, 0x76, 0x8c, 0xb5, 0x2b, 0x19, - 0x09, 0xd2, 0x2f, 0x54, 0x51, 0x33, 0x90, 0xe4, 0x0c, 0xa4, 0x38, 0x43, 0xd0, 0xfe, 0xfa, 0xb7, - 0x5f, 0xb5, 0xf6, 0x69, 0xa7, 0xd5, 0x9d, 0x14, 0xbe, 0xfa, 0x14, 0x18, 0x81, 0xb2, 0x95, 0xef, - 0x6b, 0x31, 0xdb, 0xa1, 0x9d, 0x8f, 0x03, 0x77, 0x21, 0x75, 0x62, 0xcb, 0x22, 0xfc, 0x5c, 0xac, - 0xb5, 0x6c, 0x90, 0x3f, 0xc3, 0x32, 0x41, 0x43, 0x90, 0x6a, 0x08, 0x6a, 0x9a, 0xf4, 0xf1, 0xd6, - 0x0d, 0x74, 0x77, 0xa0, 0x0f, 0xdc, 0xfb, 0x51, 0xc4, 0x63, 0x99, 0xba, 0xad, 0x8c, 0x61, 0x38, - 0xf8, 0x53, 0x51, 0x0c, 0x63, 0x0e, 0x56, 0x45, 0x39, 0xa1, 0xe2, 0x34, 0xe9, 0xf0, 0xf5, 0x74, - 0xc0, 0x32, 0xa1, 0xe9, 0x50, 0xc8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x77, 0x07, 0x50, 0x7f, - 0x75, 0x5d, 0x5b, 0x19, 0x0e, 0x21, 0xa2, 0x6e, 0x36, 0x61, 0xa8, 0xca, 0x6b, 0xa8, 0xee, 0x83, - 0x31, 0x9d, 0x91, 0x0a, 0x07, 0x83, 0x46, 0x87, 0x46, 0x87, 0x46, 0x2f, 0x91, 0x46, 0x07, 0x45, - 0x9a, 0x8a, 0x6f, 0xe3, 0xa4, 0x48, 0x9b, 0xad, 0x53, 0xb0, 0xa4, 0x44, 0x92, 0xb2, 0xb8, 0x6a, - 0x60, 0x49, 0x65, 0xd7, 0x0e, 0x1c, 0xc8, 0xbe, 0xb3, 0xa4, 0xad, 0x76, 0xa7, 0xd1, 0xd5, 0xa2, - 0x04, 0x31, 0x47, 0x05, 0x49, 0x0a, 0xe8, 0x41, 0x92, 0xfb, 0xd9, 0xd1, 0xaa, 0x17, 0x57, 0x0f, - 0x9d, 0x9a, 0xf6, 0x69, 0xa4, 0x06, 0xd6, 0xd0, 0x1a, 0x44, 0x4e, 0x78, 0xcf, 0x49, 0x86, 0xfb, - 0xa4, 0xa2, 0xdd, 0xaf, 0x1d, 0x83, 0x42, 0xe5, 0xf5, 0x92, 0xd6, 0x7a, 0x4b, 0xd4, 0x6b, 0x08, - 0xdd, 0x02, 0xd8, 0x2a, 0xf1, 0xc9, 0xdd, 0xcd, 0xe0, 0x8c, 0x93, 0x1a, 0x4b, 0x9c, 0xbe, 0xe9, - 0x28, 0xeb, 0xf6, 0xee, 0xab, 0xeb, 0xf9, 0xf9, 0x33, 0x38, 0x67, 0x43, 0x21, 0x89, 0x13, 0x49, - 0x9c, 0x85, 0x00, 0xfe, 0x2d, 0x4b, 0xe2, 0x9c, 0x4a, 0x0c, 0x1d, 0x5d, 0x97, 0x8c, 0x48, 0xc3, - 0xd9, 0x35, 0xc1, 0xd9, 0x81, 0xb3, 0xdb, 0x47, 0xce, 0x8e, 0xea, 0x54, 0x7e, 0xde, 0xe3, 0x11, - 0xcf, 0x6e, 0xde, 0x5c, 0xc7, 0x25, 0x98, 0xc4, 0x9d, 0x5c, 0xec, 0x39, 0xc4, 0x9f, 0x4d, 0x0d, - 0x48, 0xe2, 0x55, 0x14, 0xf5, 0x60, 0x82, 0x98, 0x65, 0x2d, 0xea, 0x61, 0x31, 0x96, 0xf4, 0x20, - 0xaf, 0xe3, 0xc0, 0x54, 0xd4, 0x1d, 0x05, 0x33, 0x24, 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, - 0x12, 0x6a, 0x88, 0x56, 0x1d, 0x11, 0xab, 0xa5, 0xe4, 0x06, 0xb0, 0x15, 0x61, 0x5f, 0xdb, 0x1c, - 0x4b, 0x77, 0x5c, 0xfd, 0xbf, 0xae, 0xc3, 0x51, 0x54, 0x81, 0xb3, 0x09, 0x16, 0x7b, 0x93, 0x2b, - 0x34, 0xb1, 0x7a, 0xf9, 0xe6, 0xd0, 0x37, 0xa9, 0x62, 0xba, 0xd4, 0xd9, 0xfd, 0xef, 0xf6, 0x7a, - 0xf5, 0xfe, 0xdb, 0x4a, 0xd9, 0xeb, 0x4b, 0x6c, 0x59, 0xbd, 0x73, 0x36, 0xa2, 0x9b, 0x4f, 0x6b, - 0x53, 0x46, 0xc2, 0x27, 0xcd, 0xc3, 0x8d, 0x47, 0xe5, 0x25, 0xed, 0x06, 0xd9, 0x7c, 0xc1, 0x35, - 0x73, 0xc1, 0x37, 0x84, 0x6f, 0x08, 0xdf, 0x70, 0x6f, 0x7c, 0xc3, 0x4b, 0xc3, 0x31, 0x8d, 0xc0, - 0xf5, 0x1e, 0x19, 0x2a, 0x1e, 0xf2, 0xfb, 0x9d, 0xa3, 0xbb, 0x47, 0x9f, 0xb1, 0x29, 0xeb, 0x96, - 0xfb, 0x9b, 0xf3, 0x8e, 0x62, 0xeb, 0xa9, 0xda, 0x5d, 0x7c, 0x5e, 0x7b, 0xcb, 0xd1, 0xc7, 0x13, - 0xae, 0xcb, 0xb6, 0xb9, 0x2e, 0xa8, 0xfd, 0x9f, 0x2b, 0xe6, 0x9f, 0x84, 0xc1, 0x93, 0x47, 0xb9, - 0xd2, 0x00, 0xe8, 0x97, 0x87, 0x60, 0x69, 0x28, 0xf9, 0x48, 0x7a, 0x1e, 0x92, 0xd8, 0xc7, 0x44, - 0x38, 0x03, 0xe1, 0x0c, 0x69, 0x5f, 0xb1, 0x5c, 0x4a, 0x98, 0xdc, 0x6f, 0x63, 0x6c, 0xd2, 0xc8, - 0xd1, 0x94, 0x71, 0xbe, 0x09, 0xe3, 0xa4, 0xc5, 0x43, 0xdc, 0x8a, 0x71, 0xda, 0x0a, 0x62, 0x97, - 0x54, 0xfb, 0xa4, 0xdd, 0x32, 0xb9, 0x76, 0x9f, 0x0c, 0x5b, 0xf2, 0x78, 0x75, 0x0b, 0x0a, 0x1e, - 0x0a, 0x7e, 0x0f, 0x15, 0x3c, 0xe2, 0xd5, 0xe0, 0x24, 0x99, 0xd5, 0x0c, 0xb7, 0xba, 0x11, 0x53, - 0x3b, 0x62, 0xea, 0x47, 0x42, 0x0d, 0xd1, 0xd3, 0x07, 0x1a, 0xe2, 0xd5, 0x1b, 0x38, 0x2e, 0x88, - 0x57, 0x23, 0x5e, 0x8d, 0x78, 0xb5, 0x3c, 0xb7, 0x49, 0xe8, 0x36, 0x5b, 0x7e, 0xdc, 0x23, 0x9e, - 0xd1, 0xd3, 0x49, 0xa6, 0x80, 0xc3, 0x03, 0x87, 0x07, 0x0e, 0x0f, 0x1c, 0x1e, 0xb2, 0xdd, 0xae, - 0xee, 0x47, 0xc1, 0x23, 0xa7, 0x87, 0x73, 0x84, 0xcc, 0x1c, 0xd2, 0x05, 0x43, 0x66, 0x0e, 0x8c, - 0x02, 0x8c, 0x02, 0x32, 0x73, 0x90, 0x99, 0xb3, 0x8b, 0xc8, 0x7a, 0x07, 0x32, 0x73, 0x4a, 0x69, - 0xa1, 0xa7, 0x29, 0x18, 0x3a, 0x6d, 0x54, 0x6b, 0x65, 0x77, 0x2f, 0xcd, 0x03, 0xcb, 0x0c, 0xcb, - 0x0c, 0xcb, 0x0c, 0xb8, 0x46, 0x07, 0xd7, 0x9c, 0xf1, 0xbd, 0x22, 0xef, 0x4e, 0xb0, 0x62, 0x3c, - 0xdb, 0x0c, 0x63, 0x7f, 0x70, 0xc6, 0xf7, 0x0c, 0xf9, 0x8e, 0xe8, 0x21, 0xbd, 0xe6, 0x47, 0xa8, - 0x87, 0x74, 0xfb, 0xb4, 0xd3, 0xec, 0x6a, 0x7f, 0xc4, 0x36, 0x4f, 0x7b, 0x6f, 0xf9, 0x03, 0xf7, - 0x41, 0x79, 0x8f, 0x71, 0x6b, 0x60, 0xed, 0x61, 0xa9, 0xd6, 0xd8, 0xa4, 0xba, 0xd8, 0xb4, 0xb0, - 0xd8, 0x49, 0xfd, 0xa8, 0xde, 0x42, 0xe7, 0xe8, 0x72, 0x2b, 0xf5, 0xb5, 0xca, 0x9d, 0x6a, 0xed, - 0xd1, 0x2f, 0x7a, 0x0f, 0x5c, 0x6f, 0xd7, 0xb3, 0x6e, 0x39, 0x2a, 0xef, 0x26, 0x0e, 0xe0, 0x64, - 0x7c, 0xb8, 0xda, 0x70, 0xb5, 0xe1, 0x6a, 0xc3, 0xd5, 0xa6, 0x87, 0xf2, 0x2c, 0x0a, 0x66, 0x5b, - 0xdd, 0x6d, 0x1c, 0x2f, 0x4a, 0x35, 0xae, 0xe8, 0xf1, 0xa2, 0x09, 0xe7, 0x54, 0x96, 0x14, 0xf4, - 0x42, 0xeb, 0xb6, 0xfd, 0xff, 0xea, 0x91, 0x24, 0x45, 0xb4, 0xf2, 0xd1, 0xf2, 0x83, 0xf3, 0x20, - 0x20, 0xaa, 0x02, 0x77, 0x69, 0x39, 0x1f, 0x6c, 0x15, 0x2a, 0x6e, 0xa2, 0x9a, 0xf0, 0x95, 0x4b, - 0xe3, 0xdb, 0xdc, 0x88, 0xcd, 0xd3, 0x76, 0xbb, 0x73, 0xd2, 0x6e, 0x37, 0x4e, 0x8e, 0x4e, 0x1a, - 0x67, 0xc7, 0xc7, 0xcd, 0x4e, 0x93, 0xa0, 0xb2, 0x7d, 0xe5, 0x4f, 0xcf, 0x54, 0x9e, 0x32, 0x7f, - 0x09, 0xef, 0xa9, 0x33, 0xb6, 0xed, 0x9d, 0x2a, 0x9f, 0x2c, 0x29, 0xa2, 0x15, 0x92, 0x73, 0x19, - 0xde, 0x78, 0x10, 0x38, 0xb1, 0x95, 0xba, 0x98, 0x4e, 0xf9, 0xe5, 0xd3, 0xdc, 0xfc, 0x5f, 0x2e, - 0x46, 0x0f, 0x9d, 0x2f, 0x53, 0x70, 0x56, 0x41, 0x15, 0xe8, 0x72, 0xed, 0x87, 0x32, 0x17, 0x82, - 0xce, 0x17, 0x20, 0x21, 0x39, 0xe6, 0x43, 0x56, 0x00, 0xba, 0x85, 0x02, 0xd0, 0x7c, 0x20, 0x08, - 0x05, 0xa0, 0x93, 0x0b, 0xcf, 0x5d, 0x00, 0xda, 0x1c, 0x8f, 0xa2, 0x98, 0xb8, 0x6e, 0xaa, 0x40, - 0x0d, 0x02, 0x3d, 0xf0, 0x0c, 0xc7, 0xbf, 0x9f, 0x74, 0x8e, 0x21, 0xaa, 0x08, 0xfd, 0xfc, 0x14, - 0x65, 0xea, 0x3b, 0xda, 0x44, 0xd3, 0x51, 0x26, 0x56, 0x07, 0xe5, 0xae, 0x51, 0xee, 0x5a, 0x8e, - 0x55, 0x41, 0x8b, 0xba, 0xac, 0xf8, 0x90, 0xaf, 0xd9, 0x19, 0xfa, 0xd3, 0x31, 0x90, 0x91, 0xe8, - 0x4f, 0x27, 0xbd, 0x76, 0xe8, 0x21, 0xb5, 0xef, 0xfd, 0xe9, 0xda, 0xa7, 0x9d, 0x56, 0x57, 0xbb, - 0xb8, 0x7a, 0xe8, 0x68, 0x9f, 0x42, 0x98, 0x69, 0x2b, 0xdf, 0xd7, 0xce, 0x27, 0x29, 0xa5, 0xda, - 0xf9, 0x38, 0x70, 0x27, 0x78, 0x7d, 0x4c, 0x9e, 0x27, 0x83, 0x16, 0x74, 0x9b, 0x7a, 0x43, 0x19, - 0x96, 0x09, 0x1a, 0x82, 0x8a, 0x76, 0xcb, 0x41, 0x36, 0x28, 0x27, 0xd4, 0x27, 0x26, 0x1d, 0xec, - 0x9c, 0x0e, 0x58, 0x26, 0x90, 0x19, 0xee, 0x7d, 0xe0, 0x4c, 0xe0, 0x4c, 0xe0, 0xcc, 0xdd, 0xc1, - 0x99, 0x5f, 0x5d, 0xd7, 0x56, 0x86, 0x43, 0x08, 0x34, 0x9b, 0xcd, 0x2d, 0xd4, 0xdf, 0xf7, 0xc1, - 0x98, 0x4e, 0x77, 0x87, 0x83, 0x41, 0xd1, 0x41, 0xd1, 0x41, 0xd1, 0x81, 0x50, 0x03, 0xa1, 0xb6, - 0xca, 0xce, 0x34, 0x5b, 0xa7, 0xe0, 0xd4, 0xc0, 0xa9, 0x81, 0x53, 0x03, 0xa7, 0xb6, 0xf5, 0x9c, - 0x5a, 0xab, 0xdd, 0x69, 0x74, 0xb5, 0x28, 0x9b, 0xc8, 0x51, 0x81, 0x76, 0xe5, 0xb9, 0x81, 0x3b, - 0x70, 0xed, 0x03, 0xed, 0xf3, 0xd2, 0x39, 0x0e, 0xed, 0xd3, 0x48, 0x0d, 0xac, 0xa1, 0x35, 0x88, - 0x58, 0x9b, 0xc9, 0xa9, 0x8e, 0xe8, 0x67, 0x7a, 0xb4, 0xe3, 0x18, 0x84, 0x5b, 0x41, 0x84, 0x1b, - 0xe5, 0x1a, 0x42, 0xb7, 0x50, 0xa1, 0x39, 0x24, 0xc1, 0x2d, 0x24, 0xc1, 0xe5, 0x48, 0x52, 0x96, - 0x49, 0x80, 0x1b, 0x3b, 0xce, 0xf8, 0xfe, 0xab, 0xf2, 0x72, 0xb0, 0xa0, 0x33, 0x67, 0x7d, 0x36, - 0x56, 0xc1, 0xa9, 0x70, 0x8d, 0x92, 0xa4, 0xc2, 0x0d, 0x91, 0x0a, 0x97, 0x05, 0x08, 0x0f, 0xf7, - 0x26, 0x15, 0x8e, 0xa8, 0x51, 0x3a, 0x6d, 0x83, 0x74, 0xa2, 0x42, 0xf3, 0xe5, 0xe7, 0xb1, 0x86, - 0xe0, 0xb1, 0x38, 0x78, 0xac, 0xe1, 0xb6, 0xf3, 0x58, 0x54, 0x85, 0xe1, 0xc9, 0x02, 0x8c, 0x2b, - 0xbb, 0x97, 0x26, 0xd0, 0x38, 0xfb, 0xc2, 0x84, 0x01, 0xc7, 0x64, 0xd0, 0x08, 0xb5, 0xd3, 0xb8, - 0xd6, 0x7d, 0xb4, 0x48, 0x2a, 0x8d, 0xc2, 0x93, 0x44, 0xab, 0x3b, 0xd2, 0x41, 0x63, 0x88, 0x16, - 0x49, 0x69, 0x77, 0x2b, 0x5d, 0x84, 0x73, 0xc5, 0xab, 0x69, 0xee, 0xc5, 0x59, 0x5c, 0xf6, 0x1e, - 0x8c, 0xdb, 0x7e, 0x68, 0x76, 0x7b, 0x4e, 0x56, 0xce, 0x70, 0x35, 0x49, 0x4f, 0xc5, 0x62, 0x62, - 0xf5, 0xc9, 0x77, 0xd2, 0x3d, 0x35, 0xa4, 0x03, 0x3c, 0x8b, 0xc3, 0x02, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x14, 0x8f, 0x7b, 0x88, 0x68, 0x0d, 0x1e, 0x7a, 0x83, 0x58, 0xdc, 0x81, 0x06, 0x80, 0x06, - 0x80, 0x06, 0x78, 0xfa, 0xe9, 0x4d, 0x8d, 0x3b, 0x63, 0xb3, 0x99, 0x64, 0x0a, 0x94, 0x54, 0x13, - 0x29, 0xa9, 0x36, 0x44, 0x49, 0xb5, 0x02, 0x95, 0x91, 0x84, 0x52, 0xa2, 0x55, 0x4e, 0xc4, 0x4a, - 0x8a, 0x8f, 0xba, 0x58, 0xd9, 0xed, 0xf4, 0x5d, 0x9e, 0x57, 0x3c, 0x97, 0x13, 0x9e, 0xb2, 0xff, - 0x31, 0x82, 0x0d, 0xb7, 0x45, 0x77, 0x0e, 0x99, 0x2e, 0xbd, 0x10, 0x3f, 0x8f, 0x6a, 0xf3, 0x94, - 0x7a, 0xa9, 0x99, 0x28, 0x16, 0x39, 0xaa, 0x85, 0x5e, 0xa2, 0x28, 0xf3, 0x17, 0xe7, 0x09, 0x0b, - 0x3e, 0x43, 0xbd, 0x30, 0x0b, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0xf5, 0x86, - 0xb6, 0xfa, 0x66, 0x66, 0xab, 0xff, 0x31, 0x18, 0x7b, 0x9e, 0x72, 0x82, 0x6a, 0xed, 0xb0, 0x5e, - 0x9f, 0xb1, 0xd0, 0xfd, 0xf8, 0x23, 0x8b, 0x64, 0xf4, 0xea, 0x6b, 0xc9, 0xc8, 0xa6, 0xfa, 0x06, - 0xb3, 0xbf, 0x6d, 0x66, 0x1f, 0x65, 0x68, 0xa9, 0x22, 0x31, 0x0b, 0x81, 0x07, 0x92, 0xb8, 0x0c, - 0xdd, 0x22, 0x3d, 0x91, 0x14, 0xde, 0xa4, 0x6c, 0x1d, 0x45, 0x52, 0x29, 0xf1, 0x59, 0xd5, 0x4a, - 0x4d, 0xe0, 0xb6, 0x40, 0xe0, 0x6e, 0x8f, 0x3f, 0x06, 0x02, 0x17, 0x04, 0x2e, 0x40, 0x21, 0x40, - 0x21, 0x40, 0x21, 0x40, 0x21, 0x40, 0x61, 0x39, 0x08, 0x5c, 0xf0, 0x94, 0x30, 0x49, 0x30, 0x49, - 0x30, 0x49, 0x30, 0x49, 0x30, 0x49, 0xbb, 0xc7, 0x53, 0x82, 0x8e, 0x2b, 0x3b, 0x1d, 0x87, 0xde, - 0x50, 0x5c, 0xab, 0x5a, 0xc0, 0x6a, 0xca, 0xb6, 0x11, 0xfa, 0x67, 0x72, 0x15, 0x5f, 0x92, 0xb7, - 0x5d, 0xab, 0xe1, 0x36, 0xa6, 0xdc, 0xd3, 0x50, 0xb8, 0xa4, 0xd4, 0x2d, 0x79, 0x8a, 0x7d, 0x0b, - 0x29, 0xf6, 0xc5, 0xbb, 0x9c, 0x48, 0xb1, 0xdf, 0xf8, 0x0b, 0xe1, 0x68, 0x31, 0xc5, 0xa0, 0x38, - 0x5a, 0x5c, 0x06, 0x2c, 0x8e, 0x58, 0x94, 0x38, 0xd6, 0xc6, 0xd1, 0xe2, 0xfc, 0xbb, 0xb5, 0xfc, - 0x47, 0x8b, 0x01, 0x39, 0xe4, 0x21, 0x07, 0x01, 0x64, 0x44, 0xd9, 0x34, 0xfa, 0x75, 0xa9, 0xe4, - 0xc2, 0x3f, 0xe9, 0x41, 0x9f, 0x58, 0xad, 0xb6, 0x37, 0x8c, 0x2b, 0x9d, 0x77, 0x85, 0xf9, 0x56, - 0xb6, 0x92, 0xa9, 0x47, 0xeb, 0x86, 0xcb, 0x98, 0x6e, 0xed, 0x36, 0x5f, 0x81, 0x14, 0x77, 0x3f, - 0x23, 0xe6, 0xce, 0x85, 0xb1, 0x33, 0x62, 0xea, 0xcc, 0x18, 0x3a, 0x8f, 0x2b, 0x99, 0xdb, 0x65, - 0xcc, 0xeb, 0x1a, 0x92, 0xb9, 0x80, 0x64, 0xae, 0x1e, 0x85, 0x4b, 0xc7, 0xab, 0x4d, 0xb2, 0x62, - 0xd6, 0x8a, 0x61, 0xde, 0x5b, 0x8e, 0x1e, 0xee, 0xe9, 0xb1, 0x9f, 0xbf, 0xbc, 0xe4, 0xc2, 0x68, - 0xf9, 0x0a, 0x4c, 0x36, 0x50, 0x60, 0x12, 0x05, 0x26, 0xb7, 0xc1, 0x55, 0xbb, 0x34, 0x1c, 0xd3, - 0x08, 0x5c, 0xef, 0x31, 0x47, 0x55, 0xd4, 0xdc, 0x48, 0x6a, 0x8e, 0x1a, 0x1a, 0xdf, 0xab, 0xdc, - 0x7d, 0xe6, 0x12, 0x7b, 0xd5, 0xce, 0x31, 0xc6, 0x07, 0x67, 0x7c, 0x9f, 0x3d, 0xd3, 0x3e, 0xeb, - 0x72, 0x10, 0x16, 0x4d, 0x27, 0x2c, 0x96, 0x4e, 0x48, 0x5d, 0x47, 0x85, 0xb5, 0x4f, 0x3b, 0x47, - 0x5d, 0xed, 0xaf, 0x3b, 0xa5, 0x25, 0xbe, 0x96, 0xaf, 0xfd, 0xee, 0xb9, 0xe3, 0x91, 0x76, 0x79, - 0xf1, 0x8b, 0xa6, 0x6b, 0xd6, 0xf0, 0x3c, 0x54, 0xc5, 0x9f, 0xf2, 0x68, 0x62, 0x4e, 0xba, 0x87, - 0xb3, 0xde, 0xb9, 0x0c, 0xd5, 0x9d, 0x61, 0x19, 0x8a, 0xe6, 0x0c, 0x32, 0x7f, 0xba, 0x5f, 0xe2, - 0xea, 0xd8, 0x03, 0x77, 0x1c, 0xde, 0x7b, 0x02, 0xe7, 0x25, 0x19, 0x09, 0x95, 0xb1, 0xe1, 0xb8, - 0xec, 0x81, 0xe3, 0x92, 0xbb, 0x32, 0xb6, 0xe5, 0xe8, 0x5f, 0x3d, 0xd7, 0x30, 0x07, 0x86, 0x1f, - 0xe8, 0xa3, 0xbf, 0x03, 0x9f, 0xb2, 0x66, 0xdc, 0xf2, 0xd0, 0xe8, 0xfb, 0xc6, 0x2e, 0xb4, 0x12, - 0xc6, 0x1e, 0x41, 0xed, 0x8c, 0x9f, 0x2e, 0x5d, 0xdf, 0xb7, 0xd8, 0x5c, 0x76, 0xda, 0x84, 0xad, - 0xdf, 0x4e, 0xd1, 0xfa, 0x2d, 0xe5, 0xa0, 0xd3, 0x26, 0x62, 0xe8, 0xfb, 0x46, 0x24, 0x29, 0x4b, - 0xd8, 0x9e, 0xb1, 0xef, 0x5b, 0xf3, 0xb4, 0xdd, 0xee, 0x9c, 0xb4, 0xdb, 0x8d, 0x93, 0xa3, 0x93, - 0xc6, 0xd9, 0xf1, 0x71, 0xb3, 0xd3, 0x44, 0x07, 0x38, 0x1a, 0x6d, 0x49, 0x37, 0x0a, 0x3a, 0xc0, - 0x89, 0xea, 0xc8, 0x34, 0x24, 0xc7, 0x5c, 0x9b, 0x30, 0xcd, 0x1a, 0xfe, 0x7f, 0xbf, 0x5e, 0x38, - 0xbf, 0x4c, 0x5d, 0xc6, 0xab, 0xfc, 0x1e, 0x23, 0xa7, 0x43, 0x24, 0xc1, 0x82, 0xb0, 0xfb, 0x48, - 0x99, 0x59, 0x91, 0xd7, 0xd6, 0x0d, 0x3a, 0x84, 0x68, 0xfe, 0x7c, 0xb5, 0xc0, 0x75, 0xd3, 0xf2, - 0x07, 0x86, 0x67, 0xd2, 0xa2, 0xba, 0x64, 0x50, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, - 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0xb9, 0x7d, 0xc7, 0x73, 0x9a, 0x35, 0xbc, - 0x70, 0xde, 0xd3, 0xf8, 0x87, 0x40, 0x6f, 0x5c, 0xe8, 0x6d, 0x71, 0x95, 0xa0, 0x1f, 0xca, 0x81, - 0xd5, 0x94, 0xe7, 0xb9, 0x1e, 0x2d, 0x52, 0x8b, 0x87, 0x04, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, - 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x1b, 0x5e, 0x38, - 0x1f, 0x28, 0xbc, 0x43, 0xa0, 0x34, 0x56, 0x94, 0x16, 0xaf, 0x11, 0x74, 0x43, 0x39, 0x30, 0xda, - 0xfd, 0xd8, 0x0e, 0x2c, 0x9e, 0x5c, 0xc9, 0xa5, 0xa1, 0x81, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, - 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0xf6, 0x1d, 0xb3, 0xad, 0xe6, - 0xdc, 0x5d, 0x4e, 0x5d, 0x46, 0xe4, 0x4a, 0x96, 0x18, 0xc7, 0xbd, 0xb6, 0x6e, 0xd0, 0x21, 0xe5, - 0xc0, 0x76, 0xee, 0x20, 0x50, 0xc4, 0x98, 0x2e, 0x1e, 0x12, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, - 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x6e, 0xdf, 0xb1, 0x5c, 0x0c, - 0x04, 0xfe, 0xa4, 0xf0, 0x0f, 0x81, 0xdc, 0xb8, 0x90, 0xdb, 0xe2, 0x2a, 0x41, 0x3f, 0x94, 0x03, - 0xa7, 0x8d, 0x1d, 0xa6, 0x08, 0xdc, 0xc2, 0xc0, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, - 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0x11, 0x1a, 0xf8, 0x27, - 0x02, 0x6e, 0xdb, 0x01, 0xdb, 0xfe, 0x89, 0x08, 0x5b, 0xe9, 0x90, 0xdb, 0xdf, 0x8e, 0xfb, 0x1f, - 0x47, 0x1f, 0x79, 0x6e, 0xe0, 0x52, 0x63, 0xb7, 0x85, 0xa1, 0x81, 0xde, 0x80, 0xde, 0x80, 0xde, - 0xca, 0x87, 0xde, 0x8e, 0x5a, 0x84, 0xe8, 0xed, 0x04, 0xe8, 0x0d, 0xe8, 0x6d, 0x5f, 0xd0, 0x5b, - 0xbb, 0x75, 0xd6, 0x3e, 0xeb, 0x9c, 0xb4, 0xce, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0xd2, 0x9c, - 0xa1, 0xfa, 0xe7, 0xc4, 0x37, 0xbc, 0xa2, 0x70, 0x0d, 0x81, 0xda, 0x18, 0x51, 0xdb, 0xf2, 0x52, - 0x41, 0x53, 0x94, 0x00, 0xb7, 0xd9, 0x86, 0x1f, 0xe8, 0x03, 0x5b, 0x19, 0x1e, 0x1d, 0x60, 0x9b, - 0x1b, 0x13, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0xad, 0x44, 0x48, 0xcd, 0x34, 0x02, 0xa5, 0x1b, 0x8e, - 0xa9, 0x07, 0xd6, 0xbd, 0x22, 0x44, 0x6b, 0x4d, 0x8a, 0x60, 0xdb, 0x95, 0x11, 0x04, 0xca, 0x73, - 0xc8, 0xdc, 0x92, 0x4a, 0xaf, 0x67, 0x7e, 0x6f, 0x3f, 0xe9, 0xe1, 0x9f, 0xd6, 0xf4, 0xcf, 0x5f, - 0x93, 0x3f, 0xdd, 0x85, 0x3f, 0xd5, 0x5e, 0xaf, 0xde, 0xeb, 0x99, 0x3f, 0xd7, 0xde, 0x55, 0xff, - 0xef, 0x8f, 0x9b, 0x5e, 0xef, 0xe7, 0x5e, 0x4f, 0xef, 0x2f, 0xbc, 0xa3, 0x56, 0xd9, 0x4b, 0xfb, - 0xe0, 0x8e, 0x03, 0xb6, 0x16, 0x32, 0x6b, 0xc6, 0x86, 0xbd, 0x80, 0xbd, 0x80, 0xbd, 0x28, 0x1f, - 0xb3, 0x87, 0xbc, 0x0c, 0x30, 0x7b, 0x60, 0xf6, 0xb2, 0x2c, 0x19, 0xf2, 0x32, 0xc0, 0xf1, 0x81, - 0xe3, 0xcb, 0xce, 0xf1, 0x2d, 0x9f, 0xaf, 0xfd, 0x73, 0x1c, 0xa0, 0x89, 0xcc, 0x36, 0x30, 0x7e, - 0xaf, 0x2e, 0x1c, 0xb4, 0x48, 0x49, 0xf0, 0x1d, 0x7d, 0x1b, 0x99, 0x85, 0x51, 0x81, 0xe9, 0x80, - 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0xf6, - 0x1d, 0xd3, 0x69, 0xd6, 0xf0, 0xcf, 0x71, 0x80, 0x46, 0x32, 0x25, 0x47, 0x70, 0x4b, 0xcb, 0x04, - 0x0d, 0x51, 0x12, 0xbc, 0x46, 0xdd, 0x4a, 0x66, 0x6e, 0x4c, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, - 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0xb5, 0x10, 0x04, - 0xa0, 0x99, 0xcc, 0x16, 0x20, 0x35, 0x74, 0x93, 0x29, 0x17, 0x4e, 0xe3, 0x6a, 0x27, 0xb3, 0x66, - 0x6c, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, - 0x36, 0xe0, 0xb6, 0x7d, 0xc7, 0x6d, 0x6b, 0xd2, 0xef, 0xd0, 0x50, 0x66, 0x1b, 0xb0, 0xdc, 0xab, - 0x0b, 0x07, 0x2d, 0x52, 0x12, 0x7c, 0x47, 0xdd, 0x52, 0x66, 0x6e, 0x4c, 0xe0, 0x39, 0xe0, 0x39, - 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0xb9, 0x7d, 0xc7, - 0x73, 0x53, 0x2c, 0x80, 0xa6, 0x32, 0xa5, 0x46, 0x6f, 0x4b, 0xcb, 0x04, 0x0d, 0x51, 0x12, 0xac, - 0xc6, 0xd3, 0x56, 0x66, 0x65, 0x64, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, - 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0xb6, 0x09, 0x20, 0x40, 0x63, 0x99, 0x6d, - 0x81, 0x6e, 0xe8, 0x2c, 0x43, 0x8f, 0xde, 0xde, 0x08, 0xea, 0x25, 0x4a, 0x7d, 0x44, 0xa8, 0x87, - 0x08, 0x9d, 0xda, 0x70, 0x37, 0x9f, 0xb4, 0x5a, 0x47, 0x9a, 0xae, 0x9d, 0x6b, 0xff, 0x3a, 0xff, - 0xe3, 0x77, 0xed, 0xbd, 0x11, 0x18, 0xda, 0xa5, 0x6b, 0x2a, 0x5b, 0x1b, 0xba, 0xde, 0x6c, 0x83, - 0xf7, 0x9c, 0x4b, 0xc3, 0x31, 0x6e, 0x55, 0x24, 0x07, 0xe5, 0xc6, 0x5c, 0xd4, 0x8a, 0x46, 0x06, - 0x76, 0x65, 0x5c, 0x8a, 0xa2, 0x71, 0xda, 0x1b, 0x59, 0x0d, 0x92, 0x55, 0x92, 0xcf, 0x1d, 0xc7, - 0x0d, 0x8c, 0xd0, 0x37, 0xcc, 0x27, 0xc5, 0xfe, 0xe0, 0x4e, 0xdd, 0x1b, 0x23, 0x23, 0xb8, 0x0b, - 0xd7, 0xec, 0xd0, 0x1d, 0x29, 0x67, 0x10, 0x71, 0x24, 0xba, 0x95, 0x98, 0x82, 0xc3, 0x75, 0x0f, - 0x0f, 0xfd, 0xf1, 0xd7, 0xb9, 0xd7, 0xe7, 0x9f, 0x1d, 0xfa, 0x81, 0x11, 0xa8, 0xc3, 0x18, 0x60, - 0xe6, 0x31, 0xeb, 0x15, 0x3f, 0xf0, 0xc6, 0x83, 0xc0, 0x89, 0xa5, 0x3b, 0xd9, 0x31, 0x5f, 0x3e, - 0xcd, 0x4d, 0xf7, 0xe5, 0xd7, 0xe9, 0x44, 0x6f, 0x64, 0x56, 0x3c, 0xc3, 0x9a, 0x55, 0x4c, 0xe5, - 0x0f, 0x3c, 0x6b, 0x94, 0x6b, 0xc1, 0x66, 0xa5, 0xaa, 0xe7, 0x06, 0xcb, 0xb8, 0x7f, 0xf2, 0xf1, - 0x69, 0xb9, 0x79, 0x34, 0x0a, 0xfe, 0x8c, 0x8c, 0x37, 0xa3, 0xd2, 0xdd, 0xe4, 0x3c, 0x19, 0xb9, - 0xa2, 0xa6, 0xe4, 0xc5, 0x64, 0x3d, 0x97, 0xdc, 0xfc, 0x57, 0xb2, 0x5b, 0xfc, 0xc0, 0xb3, 0x9c, - 0xdb, 0x3c, 0xdb, 0x25, 0x29, 0xec, 0x0e, 0xdf, 0x8d, 0xda, 0x77, 0xdb, 0x00, 0x89, 0x9c, 0xdb, - 0x96, 0xe1, 0xc3, 0x63, 0x63, 0xf2, 0xd8, 0x36, 0x5e, 0x80, 0x7d, 0xf3, 0xd3, 0x44, 0xbc, 0x04, - 0xe5, 0x84, 0xb2, 0x6d, 0xe6, 0xf7, 0x10, 0xa6, 0x03, 0x65, 0xd4, 0x35, 0xef, 0xd5, 0xd0, 0x18, - 0xdb, 0x41, 0x2e, 0xed, 0x50, 0x09, 0x77, 0x69, 0xb6, 0x6d, 0xd2, 0x87, 0x53, 0x03, 0xa7, 0x06, - 0x4e, 0x4d, 0x8a, 0xdd, 0xf2, 0xd5, 0x75, 0x6d, 0x65, 0x38, 0x14, 0x5e, 0x4d, 0x13, 0x5e, 0x4d, - 0x11, 0x5e, 0x8d, 0x79, 0x6f, 0x39, 0x9f, 0x02, 0x23, 0x18, 0xc3, 0xb7, 0x29, 0xd2, 0xb7, 0x99, - 0x5b, 0x06, 0x78, 0x38, 0x0c, 0x1e, 0x8e, 0x35, 0xb4, 0x1c, 0x53, 0x7d, 0xcb, 0xef, 0xe1, 0x4c, - 0x07, 0x82, 0xab, 0x00, 0x57, 0x01, 0xae, 0x42, 0x8a, 0xdd, 0x32, 0xb6, 0x9c, 0x20, 0x57, 0x3b, - 0x72, 0x82, 0x36, 0xe4, 0x44, 0x49, 0x3e, 0x04, 0x66, 0x9a, 0x32, 0xa9, 0x87, 0x3a, 0x99, 0x87, - 0x2d, 0xfd, 0x83, 0x3e, 0xed, 0x83, 0x20, 0x69, 0x87, 0x34, 0x59, 0x87, 0xad, 0x7d, 0xf8, 0x36, - 0xad, 0xc9, 0x5e, 0x04, 0xc2, 0xf6, 0x06, 0x40, 0x68, 0xfa, 0xb3, 0xae, 0x2b, 0x10, 0x03, 0x23, - 0x62, 0x78, 0xe9, 0xbe, 0x03, 0x22, 0x70, 0x40, 0x04, 0x22, 0x80, 0x90, 0x07, 0x1e, 0x90, 0x10, - 0xa0, 0x0d, 0xb0, 0x9f, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, - 0xfb, 0x07, 0x69, 0x44, 0xdc, 0x25, 0xdb, 0xf0, 0x03, 0x7d, 0x70, 0x17, 0x6b, 0x9f, 0x9c, 0x4e, - 0xd3, 0xfc, 0x60, 0x70, 0x43, 0xe0, 0x86, 0xc0, 0x0d, 0x49, 0xb1, 0x5b, 0x02, 0xeb, 0x5e, 0x05, - 0xd6, 0xe0, 0x6f, 0x1f, 0x9e, 0x08, 0x3c, 0x11, 0x78, 0x22, 0xf0, 0x44, 0xca, 0xe3, 0x89, 0x80, - 0x5c, 0x5d, 0xaf, 0xb2, 0x37, 0x4c, 0x0b, 0xf8, 0x68, 0xf8, 0xc1, 0xaf, 0x79, 0xbc, 0x22, 0x0e, - 0xa7, 0x60, 0x9d, 0x73, 0xb0, 0xd3, 0xc9, 0x19, 0x73, 0xab, 0x00, 0x24, 0xc1, 0x80, 0x24, 0xe2, - 0x63, 0x36, 0x39, 0x21, 0x44, 0x34, 0x0a, 0xb0, 0x03, 0xb0, 0x03, 0xb0, 0x43, 0x8a, 0xdd, 0x82, - 0x53, 0x29, 0x25, 0x3f, 0x51, 0xdc, 0x7d, 0xed, 0x14, 0xab, 0x86, 0xf3, 0xc4, 0x22, 0xe7, 0x89, - 0x53, 0x2d, 0x04, 0xfc, 0x04, 0x06, 0x3f, 0xc1, 0x1d, 0x29, 0x4f, 0xf7, 0x27, 0x49, 0xb2, 0xb9, - 0xdd, 0x85, 0xf9, 0xc1, 0xe0, 0x35, 0xc0, 0x6b, 0xd8, 0x03, 0xaf, 0xe1, 0xd2, 0x70, 0x4c, 0x23, - 0x70, 0xbd, 0xc7, 0xd0, 0x5c, 0x17, 0xee, 0x79, 0x28, 0x67, 0x7c, 0xaf, 0x3c, 0x23, 0xc7, 0x61, - 0xf2, 0x05, 0xf7, 0xa3, 0x9d, 0x63, 0x8c, 0x0f, 0xce, 0xf8, 0x3e, 0xfc, 0x52, 0x28, 0x8a, 0x52, - 0x04, 0xc9, 0xf1, 0xe7, 0x48, 0x79, 0x38, 0x81, 0x52, 0x34, 0xc9, 0x31, 0xb7, 0x0a, 0x70, 0x5e, - 0x48, 0x3f, 0x91, 0x52, 0x3f, 0xe4, 0x2d, 0xb1, 0xc2, 0x58, 0x5a, 0x25, 0xdd, 0xce, 0xd8, 0xfc, - 0x2e, 0xa5, 0xb8, 0x43, 0x95, 0x07, 0xdb, 0x48, 0x7f, 0x5f, 0x12, 0x95, 0x14, 0x7d, 0x3a, 0xe5, - 0x7a, 0x4c, 0x2d, 0x4c, 0xca, 0x8f, 0x65, 0x75, 0xef, 0xf2, 0xb8, 0x75, 0xf3, 0xee, 0x5c, 0x86, - 0xaf, 0x4a, 0xa1, 0x40, 0xc9, 0x1c, 0x38, 0x32, 0xed, 0xb8, 0xec, 0xb0, 0x45, 0x37, 0xa6, 0x64, - 0x32, 0xff, 0xde, 0xf2, 0xb2, 0x2d, 0xf8, 0x60, 0xba, 0xcb, 0x72, 0xc2, 0xa1, 0x78, 0x9c, 0x7c, - 0x48, 0xa8, 0xb9, 0x23, 0x48, 0x28, 0xa3, 0xe8, 0x00, 0x0b, 0x65, 0x13, 0xad, 0x62, 0xd0, 0x50, - 0x56, 0x91, 0x5b, 0xb0, 0x44, 0xba, 0x65, 0xd2, 0xd5, 0xae, 0x9f, 0x0e, 0x88, 0x92, 0xf5, 0x02, - 0x42, 0x2a, 0x01, 0x18, 0xb6, 0xb3, 0x68, 0x7d, 0x3e, 0x21, 0x26, 0xc2, 0x00, 0xa5, 0x2b, 0x5b, - 0x3f, 0x76, 0xf2, 0x11, 0x15, 0x2b, 0xb6, 0xf2, 0x8c, 0x60, 0xac, 0xf8, 0x6b, 0x96, 0xb6, 0x1c, - 0x33, 0x8d, 0x46, 0x5b, 0x77, 0xfb, 0x3a, 0x84, 0x43, 0xd2, 0x56, 0xfe, 0xa7, 0xbf, 0x9d, 0x33, - 0x02, 0x8f, 0xa1, 0x13, 0x40, 0x32, 0x78, 0x52, 0x5e, 0xfe, 0x80, 0x67, 0x7c, 0xee, 0x9a, 0xf2, - 0xb3, 0xcd, 0xc7, 0x55, 0x5b, 0x9e, 0x48, 0x39, 0xad, 0x5f, 0x5a, 0x86, 0x8e, 0x01, 0x2b, 0x4b, - 0xdb, 0x6e, 0x9c, 0xb5, 0xb1, 0xba, 0xac, 0x86, 0x8b, 0x6f, 0xb4, 0xfe, 0x9b, 0x12, 0xed, 0x5d, - 0x06, 0x5b, 0xf1, 0xbf, 0x96, 0xf3, 0xbf, 0x3c, 0xb6, 0xa2, 0x79, 0x4a, 0x38, 0xe6, 0x95, 0x11, - 0x04, 0xca, 0x73, 0xc8, 0xcd, 0x45, 0xa5, 0xda, 0x6e, 0x9c, 0xdd, 0x34, 0xf4, 0x76, 0xff, 0x47, - 0xbb, 0x71, 0xd3, 0xd0, 0x4f, 0xfb, 0x37, 0x0d, 0xfd, 0xac, 0xff, 0xe3, 0xa6, 0xa9, 0x1f, 0x4d, - 0x1e, 0x7e, 0x3f, 0x7a, 0x0a, 0x9f, 0x9d, 0xc5, 0xcf, 0x9a, 0x07, 0xad, 0xf8, 0x79, 0xad, 0xd7, - 0xab, 0x57, 0x73, 0x7c, 0xfc, 0x47, 0xaf, 0xf7, 0xb6, 0x56, 0x29, 0xdb, 0x46, 0xdd, 0xf2, 0x16, - 0x1c, 0x44, 0x85, 0xb2, 0x93, 0xf1, 0x1e, 0x6f, 0xdd, 0x40, 0x77, 0x07, 0xfa, 0xc0, 0xbd, 0x1f, - 0x79, 0xca, 0xf7, 0x95, 0xa9, 0xdb, 0xca, 0x18, 0x66, 0x0f, 0x5b, 0xe5, 0xbf, 0xd1, 0x4f, 0xa8, - 0x3c, 0x3e, 0xfd, 0x57, 0xe8, 0xe8, 0x1e, 0xc6, 0x1c, 0x5a, 0x89, 0x33, 0x28, 0x26, 0x2c, 0x7e, - 0x6e, 0xb2, 0x70, 0x32, 0x4c, 0xc1, 0x5c, 0x61, 0x0b, 0x5c, 0x21, 0xb8, 0x42, 0x70, 0x85, 0xe0, - 0x0a, 0xc1, 0x15, 0x82, 0x2b, 0x04, 0x57, 0x08, 0xae, 0x10, 0x5c, 0x21, 0xb8, 0x42, 0x70, 0x85, - 0xe0, 0x0a, 0xc1, 0x15, 0x82, 0x2b, 0x04, 0x57, 0x08, 0xae, 0x50, 0x90, 0x2b, 0x04, 0x85, 0x46, - 0x44, 0xa1, 0x65, 0x48, 0x33, 0xcd, 0xc1, 0xa0, 0xed, 0x5f, 0x1a, 0x6f, 0xd6, 0xa4, 0xd0, 0x8d, - 0xfa, 0x21, 0x7e, 0x4e, 0x0d, 0x06, 0x53, 0xa4, 0x08, 0xbf, 0x21, 0x5c, 0xa3, 0x10, 0x77, 0xa7, - 0x2d, 0xd5, 0x59, 0xf9, 0x68, 0xf9, 0xc1, 0x79, 0x10, 0xa4, 0x23, 0x82, 0x42, 0x37, 0xfc, 0x83, - 0x1d, 0x9d, 0x09, 0x4c, 0xe9, 0xe8, 0x84, 0x5e, 0xde, 0xdc, 0x27, 0xf3, 0x35, 0x7d, 0xaf, 0xfc, - 0xe9, 0x99, 0xca, 0x53, 0xe6, 0x2f, 0xe1, 0xd7, 0x76, 0xc6, 0xb6, 0x4d, 0x7a, 0x37, 0xcf, 0xc7, - 0xb7, 0xe1, 0x65, 0x46, 0xfd, 0xa3, 0x36, 0x37, 0x74, 0x19, 0x33, 0xb8, 0x0f, 0xa3, 0x23, 0x57, - 0xdd, 0xb9, 0x0d, 0xbe, 0xf4, 0x42, 0xfc, 0x7c, 0x51, 0x08, 0x56, 0x5f, 0x4b, 0x9b, 0x05, 0xfe, - 0x7e, 0xa1, 0x91, 0x66, 0xe5, 0xdc, 0x34, 0x7d, 0xed, 0xf3, 0xc7, 0xf3, 0x3f, 0x34, 0x5f, 0x05, - 0x81, 0xe5, 0xdc, 0xfa, 0x5a, 0xe0, 0x6a, 0x96, 0x63, 0x5a, 0x0f, 0x96, 0x39, 0x36, 0x6c, 0x6d, - 0x61, 0x7e, 0xa4, 0x9c, 0x73, 0xd2, 0x6a, 0x48, 0x39, 0xd7, 0x24, 0x53, 0xce, 0x33, 0x9d, 0xc0, - 0x58, 0x4b, 0xf7, 0x64, 0xaf, 0x92, 0xbc, 0x20, 0x8b, 0x1f, 0x9c, 0x81, 0xed, 0xfa, 0x96, 0x73, - 0xab, 0x0d, 0x5c, 0x27, 0x30, 0x2c, 0x47, 0x79, 0xd1, 0xc9, 0xec, 0x48, 0x3c, 0x13, 0x21, 0xd4, - 0xfd, 0x91, 0x1a, 0x58, 0x43, 0x6b, 0xd0, 0x73, 0x4c, 0x23, 0x30, 0x34, 0xd7, 0xc9, 0x25, 0xa3, - 0x39, 0x65, 0x35, 0xb7, 0xcc, 0x52, 0xc8, 0x2e, 0xa1, 0x0c, 0x53, 0xc9, 0x32, 0xb9, 0x4c, 0x93, - 0xcb, 0x36, 0xad, 0x8c, 0xe7, 0x04, 0x02, 0xdc, 0x3a, 0x85, 0xe3, 0x08, 0xd7, 0x76, 0x1b, 0xfe, - 0x8b, 0xab, 0x87, 0xb6, 0x66, 0x98, 0xa6, 0xa7, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0x4e, - 0xf9, 0x78, 0x72, 0x92, 0x39, 0xd4, 0x3b, 0x3d, 0x67, 0xef, 0x0c, 0xbf, 0x35, 0x82, 0xd9, 0x5f, - 0x57, 0x1a, 0x60, 0xb4, 0x33, 0x46, 0xdf, 0x1a, 0x3d, 0xb4, 0x09, 0x7a, 0x23, 0x84, 0xa3, 0xd0, - 0x18, 0xfd, 0x2b, 0xc3, 0x33, 0xee, 0x55, 0xa0, 0x3c, 0x3f, 0xb2, 0xf5, 0xc1, 0x9d, 0xd2, 0x12, - 0xd1, 0x54, 0xbe, 0x1f, 0x4b, 0x67, 0x1d, 0x56, 0x3d, 0xbb, 0x80, 0xc2, 0xa6, 0x67, 0x11, 0x60, - 0x58, 0xf4, 0xed, 0xb3, 0xe8, 0x1d, 0x58, 0x74, 0x58, 0xf4, 0xfd, 0xb3, 0xe8, 0x1d, 0x12, 0x8b, - 0xde, 0x61, 0xb5, 0xe8, 0x1d, 0x58, 0x74, 0x58, 0x74, 0x58, 0x74, 0x12, 0x8b, 0xbe, 0xd1, 0x3b, - 0xfb, 0x9b, 0xb2, 0xfe, 0xd9, 0xe2, 0x5b, 0x2c, 0x71, 0xad, 0x14, 0xbb, 0x6e, 0xa3, 0x50, 0xd6, - 0x66, 0x7b, 0xe4, 0xf5, 0xfb, 0xf9, 0xf2, 0x3b, 0x5e, 0x51, 0xf5, 0x69, 0xef, 0x30, 0xd5, 0x9d, - 0x7d, 0xf9, 0xcb, 0x3f, 0xff, 0x95, 0xd6, 0xff, 0xe7, 0x99, 0x2f, 0x39, 0x0d, 0xc1, 0xbd, 0x50, - 0xb5, 0x79, 0xb3, 0x88, 0xdb, 0xe6, 0x11, 0xb6, 0x5c, 0x11, 0xb5, 0xcd, 0x22, 0x68, 0xcf, 0x7d, - 0xd9, 0xcd, 0x22, 0x64, 0x2f, 0x2f, 0xf1, 0xe6, 0x6e, 0xf3, 0x2b, 0xd2, 0xb0, 0x36, 0x94, 0xf5, - 0xf1, 0xfc, 0xf7, 0x25, 0xbf, 0x37, 0x70, 0x23, 0x13, 0x9c, 0x8c, 0xaa, 0xdd, 0xbb, 0xe6, 0xd8, - 0x7e, 0x75, 0xf0, 0xcd, 0xcc, 0xec, 0xc6, 0xe6, 0x34, 0x8d, 0xd9, 0x9c, 0x37, 0x8f, 0xb6, 0xb1, - 0x49, 0x31, 0x9b, 0xb4, 0x76, 0x30, 0xb3, 0xbd, 0xcb, 0x6c, 0xd7, 0x96, 0xed, 0x57, 0xf8, 0xbd, - 0x98, 0xd5, 0xce, 0xa6, 0x1e, 0x65, 0xc5, 0xb8, 0xbd, 0xf5, 0xa2, 0x0c, 0xbb, 0x14, 0x26, 0x20, - 0x59, 0xa3, 0xf9, 0x0f, 0x6f, 0x78, 0x2b, 0x96, 0xf6, 0xed, 0x9f, 0xd1, 0xa3, 0x89, 0xb3, 0x68, - 0xbb, 0xb7, 0xd6, 0xc0, 0xb0, 0x67, 0xbb, 0xd5, 0xd7, 0x3c, 0x35, 0xf2, 0x94, 0xaf, 0x9c, 0xc0, - 0x72, 0x6e, 0x7b, 0xce, 0x74, 0xba, 0x8d, 0x01, 0x5c, 0x4a, 0x7f, 0x31, 0xb5, 0x7f, 0x98, 0xc5, - 0x1f, 0x4c, 0xbf, 0xc1, 0xf3, 0x3a, 0x7c, 0xb9, 0x1d, 0xbc, 0xdc, 0x0e, 0x5d, 0x26, 0x01, 0x48, - 0xe7, 0xf1, 0x70, 0xdb, 0xf1, 0x0c, 0x85, 0x3e, 0x2b, 0xff, 0xb9, 0x53, 0x9b, 0xe7, 0x0d, 0x66, - 0xdb, 0x41, 0xd6, 0xb0, 0x1b, 0x3c, 0x8e, 0x94, 0xf6, 0x0f, 0xed, 0x7f, 0xac, 0x61, 0xd0, 0xb5, - 0x94, 0x52, 0xa7, 0x8d, 0xd6, 0x91, 0x61, 0x7e, 0x34, 0x6e, 0xff, 0x47, 0x78, 0x6f, 0x45, 0x5f, - 0xb7, 0xe0, 0x9d, 0xf5, 0xf2, 0xfd, 0x60, 0x29, 0x66, 0xb8, 0xa8, 0xd1, 0x32, 0xd2, 0x68, 0xc6, - 0x20, 0xb0, 0x1e, 0x94, 0x16, 0xde, 0xc2, 0x25, 0x8b, 0x6d, 0xf9, 0x9a, 0xaf, 0x82, 0xc8, 0x92, - 0x87, 0x5f, 0xec, 0xe3, 0xf9, 0xef, 0x69, 0xef, 0x71, 0x0e, 0x9c, 0x38, 0xbf, 0xbc, 0xe6, 0xdc, - 0xf7, 0xcc, 0x40, 0x2b, 0x51, 0x80, 0xc2, 0x85, 0xd5, 0x4e, 0x75, 0xcb, 0x8a, 0xcd, 0x68, 0x7b, - 0xf5, 0x5d, 0xfd, 0xac, 0xee, 0xfa, 0x41, 0x29, 0x1d, 0xd1, 0x45, 0x27, 0xd4, 0x70, 0x4c, 0x2d, - 0xca, 0x09, 0x8d, 0xac, 0xbc, 0xe7, 0x8e, 0x03, 0x65, 0x2e, 0xe5, 0x75, 0xf8, 0x5b, 0xe2, 0x91, - 0x6e, 0x98, 0x58, 0xb1, 0x7d, 0x2e, 0xe9, 0x66, 0x89, 0x0f, 0x42, 0x3e, 0xe9, 0x64, 0x8b, 0xe8, - 0xa9, 0x72, 0x94, 0x92, 0x55, 0x9a, 0xff, 0x70, 0x36, 0x9f, 0xf4, 0x2f, 0x77, 0xa4, 0xdb, 0xea, - 0x41, 0xd9, 0x4b, 0xa9, 0x48, 0xf1, 0xce, 0x0d, 0x47, 0x9e, 0xdb, 0xb9, 0x75, 0x4d, 0xfb, 0xeb, - 0x4e, 0xf9, 0xaa, 0xe7, 0xac, 0xf1, 0x5f, 0x0d, 0x4f, 0x69, 0x86, 0xed, 0xbb, 0xda, 0xdf, 0x8e, - 0xfb, 0x1f, 0x47, 0x33, 0x7c, 0xed, 0xd3, 0xe7, 0x0b, 0xad, 0xea, 0xff, 0xc7, 0x0a, 0x06, 0x77, - 0xe1, 0x58, 0x96, 0x17, 0x8c, 0x0d, 0x7b, 0x2e, 0x36, 0x51, 0x3b, 0xd0, 0x2e, 0xae, 0x7f, 0xd1, - 0xaa, 0xe1, 0x0b, 0xb7, 0x9e, 0x11, 0x4e, 0x18, 0xce, 0x6b, 0x39, 0xb7, 0x91, 0x1c, 0x7d, 0xf5, - 0x2c, 0xf3, 0xd6, 0x72, 0x6e, 0x6b, 0x07, 0xda, 0xf5, 0xe7, 0x8b, 0x9e, 0x53, 0x5d, 0x2b, 0x4e, - 0xb5, 0x1d, 0xf1, 0x8f, 0x53, 0xe6, 0x31, 0xed, 0x8e, 0x83, 0x9c, 0x2e, 0x0f, 0x09, 0x1e, 0xf2, - 0xe6, 0x1e, 0xb2, 0x7d, 0x64, 0x8d, 0xc2, 0xbb, 0x0b, 0xe7, 0x78, 0xee, 0x56, 0x94, 0xd7, 0x2f, - 0x3e, 0x7f, 0xc9, 0xc9, 0x33, 0x56, 0x29, 0x03, 0x6d, 0xe4, 0xb9, 0x0f, 0x96, 0x19, 0xd1, 0x05, - 0x1f, 0x8f, 0x12, 0xd5, 0x39, 0xcd, 0x24, 0xf5, 0xe1, 0x3b, 0x07, 0x2c, 0xb7, 0x15, 0xfe, 0xb5, - 0xa4, 0x7f, 0x6d, 0x98, 0x66, 0xf8, 0xdc, 0xb0, 0xb5, 0x0f, 0xc1, 0x9d, 0xf2, 0x1c, 0x15, 0x24, - 0x89, 0xd1, 0x2b, 0x04, 0xf0, 0x7c, 0xde, 0x83, 0x76, 0xef, 0x9a, 0xca, 0xde, 0x12, 0x5f, 0x5b, - 0x05, 0x77, 0x3b, 0xe9, 0x6a, 0x87, 0xdf, 0xab, 0x2c, 0x9e, 0xb6, 0x8a, 0xb7, 0x4f, 0x7a, 0x37, - 0x3b, 0xf9, 0x24, 0xad, 0x8f, 0x3d, 0x1d, 0x76, 0x71, 0x1b, 0xf7, 0x9c, 0x04, 0x43, 0xee, 0x88, - 0x67, 0xbb, 0xd9, 0xe6, 0xde, 0x3d, 0xc7, 0x76, 0xa3, 0xcd, 0x2f, 0xec, 0xd7, 0xa6, 0x0c, 0x86, - 0xf6, 0x9f, 0x8b, 0x0f, 0x6e, 0x16, 0xe9, 0xcd, 0x1e, 0xe1, 0x7d, 0x61, 0xed, 0x9e, 0x0b, 0x88, - 0xaf, 0xbf, 0xd7, 0xab, 0xdf, 0x6b, 0xf1, 0x95, 0x25, 0xf5, 0xf2, 0xda, 0x37, 0x4b, 0xfb, 0x8d, - 0x16, 0x2f, 0x6a, 0x36, 0xf5, 0xdc, 0xb4, 0xd1, 0xc9, 0xa2, 0xd5, 0x06, 0x81, 0x0b, 0x07, 0x8f, - 0x96, 0x7d, 0xb9, 0x67, 0x44, 0xfe, 0x59, 0xd1, 0x7e, 0x49, 0x84, 0x37, 0x00, 0xa1, 0xaf, 0xc9, - 0xe4, 0xc6, 0xb2, 0xb7, 0xb1, 0x8c, 0x6d, 0x06, 0x12, 0x5f, 0x5e, 0xca, 0xe7, 0x2c, 0xc3, 0xcb, - 0x07, 0xc2, 0x36, 0x39, 0xf0, 0xf5, 0x8a, 0xc6, 0x7d, 0x55, 0xc3, 0x6e, 0xa2, 0x51, 0x53, 0x70, - 0x03, 0x9b, 0xaa, 0xcc, 0xd4, 0x2a, 0x32, 0xb5, 0x4a, 0x4c, 0x87, 0xed, 0xd3, 0x25, 0x60, 0xbc, - 0x66, 0xe8, 0x37, 0x6d, 0x2d, 0x93, 0xae, 0x85, 0x0c, 0xd8, 0xd8, 0x7d, 0x62, 0x63, 0x53, 0x75, - 0x76, 0xcf, 0xd2, 0xc9, 0x3d, 0x65, 0x01, 0x43, 0xb0, 0x90, 0x5b, 0xcd, 0x42, 0x6e, 0xb8, 0x66, - 0xa9, 0x0b, 0xfa, 0x65, 0xef, 0x86, 0x9e, 0xb2, 0xfb, 0xf9, 0x13, 0x73, 0x6e, 0x65, 0xee, 0x22, - 0xd1, 0x1b, 0x38, 0xc4, 0x1b, 0x28, 0xcd, 0x94, 0x3d, 0x9a, 0x17, 0xea, 0x0a, 0x6f, 0xdc, 0x05, - 0xb4, 0xf2, 0x5e, 0x0d, 0x8d, 0xb1, 0x1d, 0xa4, 0x2a, 0x3a, 0x51, 0x39, 0xff, 0xf5, 0xaf, 0x8b, - 0xcf, 0x1f, 0x2a, 0xa4, 0x99, 0xb0, 0xd0, 0x41, 0xd0, 0x41, 0x74, 0x3a, 0x28, 0x5b, 0x5f, 0xe4, - 0x2c, 0x7d, 0x90, 0x53, 0xf6, 0x3d, 0xde, 0x13, 0xe5, 0x15, 0x8c, 0x52, 0xd4, 0x69, 0x4e, 0x56, - 0x2d, 0xfa, 0x14, 0xa7, 0xe2, 0x8a, 0xf7, 0xb3, 0x1e, 0x3c, 0x8e, 0x94, 0xdf, 0xfd, 0xeb, 0xea, - 0xe2, 0xfd, 0x97, 0xc6, 0xb7, 0xd3, 0x66, 0xa3, 0x01, 0x5d, 0x06, 0x5d, 0x56, 0x56, 0x5d, 0x66, - 0x99, 0xca, 0x09, 0xac, 0xe0, 0xd1, 0x53, 0xc3, 0x2c, 0xba, 0x2c, 0x4d, 0x85, 0xab, 0x8b, 0x78, - 0xaa, 0x5f, 0x0c, 0x5f, 0x65, 0x8f, 0x19, 0x46, 0x72, 0xf5, 0xd7, 0xbf, 0xae, 0x3e, 0x7c, 0x4a, - 0xbb, 0xe0, 0x51, 0xdd, 0x54, 0x3f, 0x53, 0xa9, 0xc7, 0x9c, 0x47, 0xf0, 0x26, 0xba, 0xe0, 0xff, - 0x9c, 0xb5, 0x36, 0xd5, 0x05, 0x19, 0xf6, 0x00, 0xf9, 0xe5, 0x7e, 0x3b, 0x3d, 0x3f, 0x3d, 0xdd, - 0xa6, 0xcb, 0x6d, 0x6e, 0xd5, 0xdd, 0x3d, 0xcb, 0x76, 0xb9, 0xa9, 0x3e, 0xd1, 0x2f, 0x48, 0x1d, - 0x6d, 0xb9, 0x7f, 0x91, 0xb6, 0x15, 0x44, 0xc6, 0x02, 0xe9, 0xb0, 0xe4, 0xb0, 0xe4, 0x84, 0x96, - 0x3c, 0x7d, 0x75, 0xfe, 0x0c, 0xd5, 0xf7, 0x33, 0x56, 0xd7, 0xcf, 0x90, 0x5f, 0x93, 0xa7, 0x3a, - 0x7e, 0xde, 0xea, 0xf7, 0x64, 0xf5, 0xcf, 0xf3, 0xd7, 0x37, 0xcf, 0xd2, 0x43, 0x2a, 0x4f, 0xf5, - 0x79, 0x82, 0xea, 0xf2, 0x65, 0xba, 0x7b, 0x4c, 0x99, 0x4b, 0xfd, 0xbd, 0x31, 0x97, 0x25, 0x39, - 0x1e, 0x1d, 0x95, 0x9e, 0x8e, 0xe2, 0xc2, 0x9b, 0x37, 0x72, 0xcb, 0x94, 0xf8, 0x55, 0xb9, 0x57, - 0xf7, 0x5f, 0x95, 0xe7, 0x6f, 0x1e, 0x54, 0x9b, 0x7e, 0x00, 0x51, 0x35, 0x44, 0xd5, 0x16, 0x37, - 0x51, 0x7a, 0x07, 0x32, 0xfe, 0x1c, 0x73, 0x16, 0x54, 0x0b, 0xfe, 0xe3, 0xce, 0xfa, 0x8f, 0x69, - 0x8b, 0x0d, 0x55, 0x66, 0xd5, 0x77, 0x3d, 0x35, 0xcc, 0x4e, 0xcb, 0x2c, 0x0e, 0xb3, 0x27, 0x15, - 0xb8, 0x86, 0xa8, 0xc0, 0xb5, 0xf6, 0x20, 0xc2, 0xce, 0x54, 0xe0, 0x42, 0x37, 0x56, 0xfa, 0xaa, - 0x58, 0x43, 0x54, 0xc5, 0x12, 0x12, 0xaa, 0x6c, 0xc2, 0x95, 0x03, 0x79, 0x6a, 0x24, 0x9d, 0x58, - 0x67, 0x29, 0xb1, 0x64, 0xbd, 0x58, 0xb3, 0x16, 0xa2, 0xcc, 0x49, 0xd9, 0x91, 0x5b, 0x2e, 0x0e, - 0xe1, 0x24, 0x17, 0x52, 0x6a, 0x61, 0x65, 0x13, 0x5a, 0x36, 0xe1, 0xe5, 0x10, 0xe2, 0x7c, 0xc2, - 0x9c, 0x53, 0xa8, 0xb3, 0xd3, 0x93, 0xaf, 0xee, 0x36, 0x5b, 0x19, 0xc3, 0xf4, 0x2e, 0xe3, 0x8b, - 0x96, 0xf2, 0x84, 0x60, 0xac, 0xab, 0x84, 0x84, 0xd8, 0xac, 0x02, 0x6e, 0x94, 0x11, 0x59, 0x54, - 0x8b, 0xb2, 0x1c, 0x06, 0x75, 0xa1, 0x46, 0x1f, 0x99, 0xbe, 0xcd, 0x51, 0xfb, 0x17, 0x2a, 0x17, - 0x2a, 0x17, 0x2a, 0x17, 0x2a, 0xf7, 0x05, 0x95, 0x7b, 0x33, 0x53, 0xb9, 0xff, 0x18, 0x8c, 0x3d, - 0x4f, 0x39, 0x41, 0xb5, 0x76, 0x58, 0xaf, 0xcf, 0x4e, 0x21, 0xf5, 0x37, 0xac, 0x4b, 0x9e, 0x8c, - 0x6c, 0xaa, 0x6f, 0x15, 0x34, 0x98, 0x4c, 0x63, 0x37, 0x36, 0xa6, 0xea, 0x63, 0x7e, 0x3c, 0xfe, - 0x7b, 0xb8, 0x40, 0x14, 0xa1, 0x9b, 0x24, 0xf5, 0x1d, 0xcd, 0xdf, 0x3a, 0xf2, 0xb3, 0x6d, 0x38, - 0x5f, 0x2e, 0xa3, 0xa1, 0xbf, 0x24, 0x47, 0x0d, 0xaf, 0xd5, 0x70, 0x3b, 0xfa, 0x46, 0xa2, 0x07, - 0x24, 0xf1, 0xfe, 0xcc, 0xbc, 0x2f, 0xb3, 0x57, 0x7c, 0x9e, 0xdb, 0x81, 0x95, 0x1d, 0x8f, 0x63, - 0x4e, 0x83, 0x87, 0x0c, 0x81, 0xcc, 0xcd, 0xb8, 0xcb, 0x54, 0x1c, 0x65, 0xea, 0x20, 0x66, 0x0b, - 0x41, 0xcc, 0x54, 0xde, 0x2a, 0x8e, 0x06, 0x52, 0x42, 0x38, 0x04, 0x30, 0x33, 0x82, 0x26, 0x1c, - 0x0d, 0xcc, 0x68, 0x65, 0x70, 0xf2, 0x0e, 0x22, 0x0e, 0x11, 0xe7, 0x13, 0xf1, 0xf2, 0x9e, 0xbc, - 0xc3, 0xc1, 0x36, 0xa8, 0x0a, 0xa8, 0x0a, 0x1c, 0x6c, 0xc3, 0xc1, 0x36, 0x4e, 0x0a, 0x13, 0x07, - 0xdb, 0xca, 0x7f, 0xb9, 0x5b, 0x79, 0xb0, 0x0d, 0xe7, 0xc6, 0x60, 0x28, 0x71, 0x6e, 0x2c, 0xa5, - 0x91, 0xc4, 0xb9, 0xb1, 0xe5, 0xcf, 0xe3, 0xdc, 0x18, 0xce, 0x8d, 0xe5, 0xb7, 0x5b, 0xdb, 0x1b, - 0xce, 0xd8, 0x20, 0x9c, 0x9b, 0x2d, 0x98, 0xb1, 0xa9, 0x69, 0x4d, 0xa9, 0xd5, 0x36, 0x34, 0xa5, - 0x38, 0x95, 0x55, 0xe6, 0x80, 0xc6, 0xc6, 0xa6, 0x2f, 0x43, 0x02, 0x4c, 0x9a, 0x04, 0x97, 0x24, - 0x81, 0xa5, 0x5e, 0x8f, 0xcf, 0x27, 0x1e, 0x4e, 0x77, 0xa1, 0x64, 0xbf, 0xd6, 0x97, 0x77, 0xfe, - 0x2e, 0xb5, 0x6c, 0xcd, 0x5d, 0x92, 0x79, 0x49, 0x7d, 0x6d, 0x5e, 0x82, 0xf9, 0xf3, 0xb3, 0xdb, - 0x5a, 0xae, 0xfa, 0xf2, 0xec, 0xe2, 0x9f, 0x2d, 0xb9, 0xfc, 0x66, 0x6e, 0xc6, 0xe7, 0x66, 0xaa, - 0x58, 0xfe, 0xaf, 0xc9, 0xf9, 0xe1, 0x4f, 0xd1, 0x6c, 0x2b, 0x12, 0x5f, 0xb1, 0xfc, 0xdf, 0x8c, - 0xbf, 0xd5, 0xb5, 0xeb, 0xae, 0x6a, 0x83, 0xe5, 0x2b, 0xac, 0xcc, 0xff, 0x6b, 0xe1, 0xa6, 0xbd, - 0x57, 0x0f, 0xd6, 0xb4, 0x68, 0xf5, 0xd3, 0x9b, 0xa7, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x9d, 0x17, 0xcc, 0x09, 0x40, 0x89, 0x13, 0x00, - } -) - -// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that -// correspond with the leaf. The type is represented as a reflect.Type. The naming -// of the map ensures that there are no clashes with valid YANG identifiers. -func initΛEnumTypes() { - ΛEnumTypes = map[string][]reflect.Type{ - "/interfaces/interface/aggregation/config/lag-type": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfAggregate_AggregationType)(0)), - }, - "/interfaces/interface/aggregation/switched-vlan/config/interface-mode": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_VlanModeType)(0)), - }, - "/interfaces/interface/config/type": []reflect.Type{ - reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), - }, - "/interfaces/interface/ethernet/config/duplex-mode": []reflect.Type{ - reflect.TypeOf((E_Ethernet_DuplexMode)(0)), - }, - "/interfaces/interface/ethernet/config/port-speed": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), - }, - "/interfaces/interface/ethernet/state/negotiated-duplex-mode": []reflect.Type{ - reflect.TypeOf((E_Ethernet_NegotiatedDuplexMode)(0)), - }, - "/interfaces/interface/ethernet/state/negotiated-port-speed": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), - }, - "/interfaces/interface/ethernet/switched-vlan/config/interface-mode": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_VlanModeType)(0)), - }, - "/interfaces/interface/routed-vlan/ipv4/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/status": []reflect.Type{ - reflect.TypeOf((E_Address_Status)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ - reflect.TypeOf((E_Neighbor_NeighborState)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/state/admin-status": []reflect.Type{ - reflect.TypeOf((E_Interface_AdminStatus)(0)), - }, - "/interfaces/interface/state/oper-status": []reflect.Type{ - reflect.TypeOf((E_Interface_OperStatus)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/status": []reflect.Type{ - reflect.TypeOf((E_Address_Status)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ - reflect.TypeOf((E_Neighbor_NeighborState)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/admin-status": []reflect.Type{ - reflect.TypeOf((E_Interface_AdminStatus)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/oper-status": []reflect.Type{ - reflect.TypeOf((E_Interface_OperStatus)(0)), - }, - "/vlans/vlan/config/status": []reflect.Type{ - reflect.TypeOf((E_Vlan_Status)(0)), - }, - "/vlans/vlan/config/tpid": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_TPID_TYPES)(0)), - }, - } -} diff --git a/device-operator/internal/model/update.sh b/device-operator/internal/model/update.sh deleted file mode 100755 index 433d426..0000000 --- a/device-operator/internal/model/update.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2022 NTT Communications Corporation -# -# 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. -# - -set -o nounset -set -o xtrace - -go install github.com/openconfig/ygot/generator@latest -generator -generate_fakeroot -output_file generated.go -package_name model -path=yang -compress_paths=true -shorten_enum_leaf_names -typedef_enum_with_defmod -exclude_modules=ietf-interfaces yang/openconfig-interfaces.yang yang/openconfig-if-ip.yang diff --git a/device-operator/internal/model/yang/iana-if-type.yang b/device-operator/internal/model/yang/iana-if-type.yang deleted file mode 100644 index 0b8b1b8..0000000 --- a/device-operator/internal/model/yang/iana-if-type.yang +++ /dev/null @@ -1,1494 +0,0 @@ -module iana-if-type { - namespace "urn:ietf:params:xml:ns:yang:iana-if-type"; - prefix ianaift; - import ietf-interfaces { - prefix if; - } - organization "IANA"; - contact - " Internet Assigned Numbers Authority - Postal: ICANN - 4676 Admiralty Way, Suite 330 - Marina del Rey, CA 90292 - Tel: +1 310 823 9358 - "; - description - "This YANG module defines YANG identities for IANA-registered - interface types. - This YANG module is maintained by IANA and reflects the - 'ifType definitions' registry. - The latest revision of this YANG module can be obtained from - the IANA web site. - Requests for new values should be made to IANA via - email (iana@iana.org). - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - The initial version of this YANG module is part of RFC 7224; - see the RFC itself for full legal notices."; - reference - "IANA 'ifType definitions' registry. - "; - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7224: IANA Interface Type YANG Module"; - } - identity iana-interface-type { - base if:interface-type; - description - "This identity is used as a base for all interface types - defined in the 'ifType definitions' registry."; - } - identity other { - base iana-interface-type; - } - identity regular1822 { - base iana-interface-type; - } - identity hdh1822 { - base iana-interface-type; - } - identity ddnX25 { - base iana-interface-type; - } - identity rfc877x25 { - base iana-interface-type; - reference - "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer"; - } - identity ethernetCsmacd { - base iana-interface-type; - description - "For all Ethernet-like interfaces, regardless of speed, - as per RFC 3635."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity iso88023Csmacd { - base iana-interface-type; - status deprecated; - description - "Deprecated via RFC 3635. - Use ethernetCsmacd(6) instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity iso88024TokenBus { - base iana-interface-type; - } - identity iso88025TokenRing { - base iana-interface-type; - } - identity iso88026Man { - base iana-interface-type; - } - identity starLan { - base iana-interface-type; - status deprecated; - description - "Deprecated via RFC 3635. - Use ethernetCsmacd(6) instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity proteon10Mbit { - base iana-interface-type; - } - identity proteon80Mbit { - base iana-interface-type; - } - identity hyperchannel { - base iana-interface-type; - } - identity fddi { - base iana-interface-type; - reference - "RFC 1512 - FDDI Management Information Base"; - } - identity lapb { - base iana-interface-type; - reference - "RFC 1381 - SNMP MIB Extension for X.25 LAPB"; - } - identity sdlc { - base iana-interface-type; - } - identity ds1 { - base iana-interface-type; - description - "DS1-MIB."; - reference - "RFC 4805 - Definitions of Managed Objects for the - DS1, J1, E1, DS2, and E2 Interface Types"; - } - identity e1 { - base iana-interface-type; - status obsolete; - description - "Obsolete; see DS1-MIB."; - reference - "RFC 4805 - Definitions of Managed Objects for the - DS1, J1, E1, DS2, and E2 Interface Types"; - } - identity basicISDN { - base iana-interface-type; - description - "No longer used. See also RFC 2127."; - } - identity primaryISDN { - base iana-interface-type; - description - "No longer used. See also RFC 2127."; - } - identity propPointToPointSerial { - base iana-interface-type; - description - "Proprietary serial."; - } - identity ppp { - base iana-interface-type; - } - identity softwareLoopback { - base iana-interface-type; - } - identity eon { - base iana-interface-type; - description - "CLNP over IP."; - } - identity ethernet3Mbit { - base iana-interface-type; - } - identity nsip { - base iana-interface-type; - description - "XNS over IP."; - } - identity slip { - base iana-interface-type; - description - "Generic SLIP."; - } - identity ultra { - base iana-interface-type; - description - "Ultra Technologies."; - } - identity ds3 { - base iana-interface-type; - description - "DS3-MIB."; - reference - "RFC 3896 - Definitions of Managed Objects for the - DS3/E3 Interface Type"; - } - identity sip { - base iana-interface-type; - description - "SMDS, coffee."; - reference - "RFC 1694 - Definitions of Managed Objects for SMDS - Interfaces using SMIv2"; - } - identity frameRelay { - base iana-interface-type; - description - "DTE only."; - reference - "RFC 2115 - Management Information Base for Frame Relay - DTEs Using SMIv2"; - } - identity rs232 { - base iana-interface-type; - reference - "RFC 1659 - Definitions of Managed Objects for RS-232-like - Hardware Devices using SMIv2"; - } - identity para { - base iana-interface-type; - description - "Parallel-port."; - reference - "RFC 1660 - Definitions of Managed Objects for - Parallel-printer-like Hardware Devices using - SMIv2"; - } - identity arcnet { - base iana-interface-type; - description - "ARCnet."; - } - identity arcnetPlus { - base iana-interface-type; - description - "ARCnet Plus."; - } - identity atm { - base iana-interface-type; - description - "ATM cells."; - } - identity miox25 { - base iana-interface-type; - reference - "RFC 1461 - SNMP MIB extension for Multiprotocol - Interconnect over X.25"; - } - identity sonet { - base iana-interface-type; - description - "SONET or SDH."; - } - identity x25ple { - base iana-interface-type; - reference - "RFC 2127 - ISDN Management Information Base using SMIv2"; - } - identity iso88022llc { - base iana-interface-type; - } - identity localTalk { - base iana-interface-type; - } - identity smdsDxi { - base iana-interface-type; - } - identity frameRelayService { - base iana-interface-type; - description - "FRNETSERV-MIB."; - reference - "RFC 2954 - Definitions of Managed Objects for Frame - Relay Service"; - } - identity v35 { - base iana-interface-type; - } - identity hssi { - base iana-interface-type; - } - identity hippi { - base iana-interface-type; - } - identity modem { - base iana-interface-type; - description - "Generic modem."; - } - identity aal5 { - base iana-interface-type; - description - "AAL5 over ATM."; - } - identity sonetPath { - base iana-interface-type; - } - identity sonetVT { - base iana-interface-type; - } - identity smdsIcip { - base iana-interface-type; - description - "SMDS InterCarrier Interface."; - } - identity propVirtual { - base iana-interface-type; - description - "Proprietary virtual/internal."; - reference - "RFC 2863 - The Interfaces Group MIB"; - } - identity propMultiplexor { - base iana-interface-type; - description - "Proprietary multiplexing."; - reference - "RFC 2863 - The Interfaces Group MIB"; - } - identity ieee80212 { - base iana-interface-type; - description - "100BaseVG."; - } - identity fibreChannel { - base iana-interface-type; - description - "Fibre Channel."; - } - identity hippiInterface { - base iana-interface-type; - description - "HIPPI interfaces."; - } - identity frameRelayInterconnect { - base iana-interface-type; - status obsolete; - description - "Obsolete; use either - frameRelay(32) or frameRelayService(44)."; - } - identity aflane8023 { - base iana-interface-type; - description - "ATM Emulated LAN for 802.3."; - } - identity aflane8025 { - base iana-interface-type; - description - "ATM Emulated LAN for 802.5."; - } - identity cctEmul { - base iana-interface-type; - description - "ATM Emulated circuit."; - } - identity fastEther { - base iana-interface-type; - status deprecated; - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity isdn { - base iana-interface-type; - description - "ISDN and X.25."; - reference - "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN - in the Packet Mode"; - } - identity v11 { - base iana-interface-type; - description - "CCITT V.11/X.21."; - } - identity v36 { - base iana-interface-type; - description - "CCITT V.36."; - } - identity g703at64k { - base iana-interface-type; - description - "CCITT G703 at 64Kbps."; - } - identity g703at2mb { - base iana-interface-type; - status obsolete; - description - "Obsolete; see DS1-MIB."; - } - identity qllc { - base iana-interface-type; - description - "SNA QLLC."; - } - identity fastEtherFX { - base iana-interface-type; - status deprecated; - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity channel { - base iana-interface-type; - description - "Channel."; - } - identity ieee80211 { - base iana-interface-type; - description - "Radio spread spectrum."; - } - identity ibm370parChan { - base iana-interface-type; - description - "IBM System 360/370 OEMI Channel."; - } - identity escon { - base iana-interface-type; - description - "IBM Enterprise Systems Connection."; - } - identity dlsw { - base iana-interface-type; - description - "Data Link Switching."; - } - identity isdns { - base iana-interface-type; - description - "ISDN S/T interface."; - } - identity isdnu { - base iana-interface-type; - description - "ISDN U interface."; - } - identity lapd { - base iana-interface-type; - description - "Link Access Protocol D."; - } - identity ipSwitch { - base iana-interface-type; - description - "IP Switching Objects."; - } - identity rsrb { - base iana-interface-type; - description - "Remote Source Route Bridging."; - } - identity atmLogical { - base iana-interface-type; - description - "ATM Logical Port."; - reference - "RFC 3606 - Definitions of Supplemental Managed Objects - for ATM Interface"; - } - identity ds0 { - base iana-interface-type; - description - "Digital Signal Level 0."; - reference - "RFC 2494 - Definitions of Managed Objects for the DS0 - and DS0 Bundle Interface Type"; - } - identity ds0Bundle { - base iana-interface-type; - description - "Group of ds0s on the same ds1."; - reference - "RFC 2494 - Definitions of Managed Objects for the DS0 - and DS0 Bundle Interface Type"; - } - identity bsc { - base iana-interface-type; - description - "Bisynchronous Protocol."; - } - identity async { - base iana-interface-type; - description - "Asynchronous Protocol."; - } - identity cnr { - base iana-interface-type; - description - "Combat Net Radio."; - } - identity iso88025Dtr { - base iana-interface-type; - description - "ISO 802.5r DTR."; - } - identity eplrs { - base iana-interface-type; - description - "Ext Pos Loc Report Sys."; - } - identity arap { - base iana-interface-type; - description - "Appletalk Remote Access Protocol."; - } - identity propCnls { - base iana-interface-type; - description - "Proprietary Connectionless Protocol."; - } - identity hostPad { - base iana-interface-type; - description - "CCITT-ITU X.29 PAD Protocol."; - } - identity termPad { - base iana-interface-type; - description - "CCITT-ITU X.3 PAD Facility."; - } - identity frameRelayMPI { - base iana-interface-type; - description - "Multiproto Interconnect over FR."; - } - identity x213 { - base iana-interface-type; - description - "CCITT-ITU X213."; - } - identity adsl { - base iana-interface-type; - description - "Asymmetric Digital Subscriber Loop."; - } - identity radsl { - base iana-interface-type; - description - "Rate-Adapt. Digital Subscriber Loop."; - } - identity sdsl { - base iana-interface-type; - description - "Symmetric Digital Subscriber Loop."; - } - identity vdsl { - base iana-interface-type; - description - "Very H-Speed Digital Subscrib. Loop."; - } - identity iso88025CRFPInt { - base iana-interface-type; - description - "ISO 802.5 CRFP."; - } - identity myrinet { - base iana-interface-type; - description - "Myricom Myrinet."; - } - identity voiceEM { - base iana-interface-type; - description - "Voice recEive and transMit."; - } - identity voiceFXO { - base iana-interface-type; - description - "Voice Foreign Exchange Office."; - } - identity voiceFXS { - base iana-interface-type; - description - "Voice Foreign Exchange Station."; - } - identity voiceEncap { - base iana-interface-type; - description - "Voice encapsulation."; - } - identity voiceOverIp { - base iana-interface-type; - description - "Voice over IP encapsulation."; - } - identity atmDxi { - base iana-interface-type; - description - "ATM DXI."; - } - identity atmFuni { - base iana-interface-type; - description - "ATM FUNI."; - } - identity atmIma { - base iana-interface-type; - description - "ATM IMA."; - } - identity pppMultilinkBundle { - base iana-interface-type; - description - "PPP Multilink Bundle."; - } - identity ipOverCdlc { - base iana-interface-type; - description - "IBM ipOverCdlc."; - } - identity ipOverClaw { - base iana-interface-type; - description - "IBM Common Link Access to Workstn."; - } - identity stackToStack { - base iana-interface-type; - description - "IBM stackToStack."; - } - identity virtualIpAddress { - base iana-interface-type; - description - "IBM VIPA."; - } - identity mpc { - base iana-interface-type; - description - "IBM multi-protocol channel support."; - } - identity ipOverAtm { - base iana-interface-type; - description - "IBM ipOverAtm."; - reference - "RFC 2320 - Definitions of Managed Objects for Classical IP - and ARP Over ATM Using SMIv2 (IPOA-MIB)"; - } - identity iso88025Fiber { - base iana-interface-type; - description - "ISO 802.5j Fiber Token Ring."; - } - identity tdlc { - base iana-interface-type; - description - "IBM twinaxial data link control."; - } - identity gigabitEthernet { - base iana-interface-type; - status deprecated; - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity hdlc { - base iana-interface-type; - description - "HDLC."; - } - identity lapf { - base iana-interface-type; - description - "LAP F."; - } - identity v37 { - base iana-interface-type; - description - "V.37."; - } - identity x25mlp { - base iana-interface-type; - description - "Multi-Link Protocol."; - } - identity x25huntGroup { - base iana-interface-type; - description - "X25 Hunt Group."; - } - identity transpHdlc { - base iana-interface-type; - description - "Transp HDLC."; - } - identity interleave { - base iana-interface-type; - description - "Interleave channel."; - } - identity fast { - base iana-interface-type; - description - "Fast channel."; - } - identity ip { - base iana-interface-type; - description - "IP (for APPN HPR in IP networks)."; - } - identity docsCableMaclayer { - base iana-interface-type; - description - "CATV Mac Layer."; - } - identity docsCableDownstream { - base iana-interface-type; - description - "CATV Downstream interface."; - } - identity docsCableUpstream { - base iana-interface-type; - description - "CATV Upstream interface."; - } - identity a12MppSwitch { - base iana-interface-type; - description - "Avalon Parallel Processor."; - } - identity tunnel { - base iana-interface-type; - description - "Encapsulation interface."; - } - identity coffee { - base iana-interface-type; - description - "Coffee pot."; - reference - "RFC 2325 - Coffee MIB"; - } - identity ces { - base iana-interface-type; - description - "Circuit Emulation Service."; - } - identity atmSubInterface { - base iana-interface-type; - description - "ATM Sub Interface."; - } - identity l2vlan { - base iana-interface-type; - description - "Layer 2 Virtual LAN using 802.1Q."; - } - identity l3ipvlan { - base iana-interface-type; - description - "Layer 3 Virtual LAN using IP."; - } - identity l3ipxvlan { - base iana-interface-type; - description - "Layer 3 Virtual LAN using IPX."; - } - identity digitalPowerline { - base iana-interface-type; - description - "IP over Power Lines."; - } - identity mediaMailOverIp { - base iana-interface-type; - description - "Multimedia Mail over IP."; - } - identity dtm { - base iana-interface-type; - description - "Dynamic synchronous Transfer Mode."; - } - identity dcn { - base iana-interface-type; - description - "Data Communications Network."; - } - identity ipForward { - base iana-interface-type; - description - "IP Forwarding Interface."; - } - identity msdsl { - base iana-interface-type; - description - "Multi-rate Symmetric DSL."; - } - identity ieee1394 { - base iana-interface-type; - description - "IEEE1394 High Performance Serial Bus."; - } - identity if-gsn { - base iana-interface-type; - description - "HIPPI-6400."; - } - identity dvbRccMacLayer { - base iana-interface-type; - description - "DVB-RCC MAC Layer."; - } - identity dvbRccDownstream { - base iana-interface-type; - description - "DVB-RCC Downstream Channel."; - } - identity dvbRccUpstream { - base iana-interface-type; - description - "DVB-RCC Upstream Channel."; - } - identity atmVirtual { - base iana-interface-type; - description - "ATM Virtual Interface."; - } - identity mplsTunnel { - base iana-interface-type; - description - "MPLS Tunnel Virtual Interface."; - } - identity srp { - base iana-interface-type; - description - "Spatial Reuse Protocol."; - } - identity voiceOverAtm { - base iana-interface-type; - description - "Voice over ATM."; - } - identity voiceOverFrameRelay { - base iana-interface-type; - description - "Voice Over Frame Relay."; - } - identity idsl { - base iana-interface-type; - description - "Digital Subscriber Loop over ISDN."; - } - identity compositeLink { - base iana-interface-type; - description - "Avici Composite Link Interface."; - } - identity ss7SigLink { - base iana-interface-type; - description - "SS7 Signaling Link."; - } - identity propWirelessP2P { - base iana-interface-type; - description - "Prop. P2P wireless interface."; - } - identity frForward { - base iana-interface-type; - description - "Frame Forward Interface."; - } - identity rfc1483 { - base iana-interface-type; - description - "Multiprotocol over ATM AAL5."; - reference - "RFC 1483 - Multiprotocol Encapsulation over ATM - Adaptation Layer 5"; - } - identity usb { - base iana-interface-type; - description - "USB Interface."; - } - identity ieee8023adLag { - base iana-interface-type; - description - "IEEE 802.3ad Link Aggregate."; - } - identity bgppolicyaccounting { - base iana-interface-type; - description - "BGP Policy Accounting."; - } - identity frf16MfrBundle { - base iana-interface-type; - description - "FRF.16 Multilink Frame Relay."; - } - identity h323Gatekeeper { - base iana-interface-type; - description - "H323 Gatekeeper."; - } - identity h323Proxy { - base iana-interface-type; - description - "H323 Voice and Video Proxy."; - } - identity mpls { - base iana-interface-type; - description - "MPLS."; - } - identity mfSigLink { - base iana-interface-type; - description - "Multi-frequency signaling link."; - } - identity hdsl2 { - base iana-interface-type; - description - "High Bit-Rate DSL - 2nd generation."; - } - identity shdsl { - base iana-interface-type; - description - "Multirate HDSL2."; - } - identity ds1FDL { - base iana-interface-type; - description - "Facility Data Link (4Kbps) on a DS1."; - } - identity pos { - base iana-interface-type; - description - "Packet over SONET/SDH Interface."; - } - identity dvbAsiIn { - base iana-interface-type; - description - "DVB-ASI Input."; - } - identity dvbAsiOut { - base iana-interface-type; - description - "DVB-ASI Output."; - } - identity plc { - base iana-interface-type; - description - "Power Line Communications."; - } - identity nfas { - base iana-interface-type; - description - "Non-Facility Associated Signaling."; - } - identity tr008 { - base iana-interface-type; - description - "TR008."; - } - identity gr303RDT { - base iana-interface-type; - description - "Remote Digital Terminal."; - } - identity gr303IDT { - base iana-interface-type; - description - "Integrated Digital Terminal."; - } - identity isup { - base iana-interface-type; - description - "ISUP."; - } - identity propDocsWirelessMaclayer { - base iana-interface-type; - description - "Cisco proprietary Maclayer."; - } - identity propDocsWirelessDownstream { - base iana-interface-type; - description - "Cisco proprietary Downstream."; - } - identity propDocsWirelessUpstream { - base iana-interface-type; - description - "Cisco proprietary Upstream."; - } - identity hiperlan2 { - base iana-interface-type; - description - "HIPERLAN Type 2 Radio Interface."; - } - identity propBWAp2Mp { - base iana-interface-type; - description - "PropBroadbandWirelessAccesspt2Multipt (use of this value - for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f - is deprecated, and ieee80216WMAN(237) should be used - instead)."; - } - identity sonetOverheadChannel { - base iana-interface-type; - description - "SONET Overhead Channel."; - } - identity digitalWrapperOverheadChannel { - base iana-interface-type; - description - "Digital Wrapper."; - } - identity aal2 { - base iana-interface-type; - description - "ATM adaptation layer 2."; - } - identity radioMAC { - base iana-interface-type; - description - "MAC layer over radio links."; - } - identity atmRadio { - base iana-interface-type; - description - "ATM over radio links."; - } - identity imt { - base iana-interface-type; - description - "Inter-Machine Trunks."; - } - identity mvl { - base iana-interface-type; - description - "Multiple Virtual Lines DSL."; - } - identity reachDSL { - base iana-interface-type; - description - "Long Reach DSL."; - } - identity frDlciEndPt { - base iana-interface-type; - description - "Frame Relay DLCI End Point."; - } - identity atmVciEndPt { - base iana-interface-type; - description - "ATM VCI End Point."; - } - identity opticalChannel { - base iana-interface-type; - description - "Optical Channel."; - } - identity opticalTransport { - base iana-interface-type; - description - "Optical Transport."; - } - identity propAtm { - base iana-interface-type; - description - "Proprietary ATM."; - } - identity voiceOverCable { - base iana-interface-type; - description - "Voice Over Cable Interface."; - } - identity infiniband { - base iana-interface-type; - description - "Infiniband."; - } - identity teLink { - base iana-interface-type; - description - "TE Link."; - } - identity q2931 { - base iana-interface-type; - description - "Q.2931."; - } - identity virtualTg { - base iana-interface-type; - description - "Virtual Trunk Group."; - } - identity sipTg { - base iana-interface-type; - description - "SIP Trunk Group."; - } - identity sipSig { - base iana-interface-type; - description - "SIP Signaling."; - } - identity docsCableUpstreamChannel { - base iana-interface-type; - description - "CATV Upstream Channel."; - } - identity econet { - base iana-interface-type; - description - "Acorn Econet."; - } - identity pon155 { - base iana-interface-type; - description - "FSAN 155Mb Symetrical PON interface."; - } - identity pon622 { - base iana-interface-type; - description - "FSAN 622Mb Symetrical PON interface."; - } - identity bridge { - base iana-interface-type; - description - "Transparent bridge interface."; - } - identity linegroup { - base iana-interface-type; - description - "Interface common to multiple lines."; - } - identity voiceEMFGD { - base iana-interface-type; - description - "Voice E&M Feature Group D."; - } - identity voiceFGDEANA { - base iana-interface-type; - description - "Voice FGD Exchange Access North American."; - } - identity voiceDID { - base iana-interface-type; - description - "Voice Direct Inward Dialing."; - } - identity mpegTransport { - base iana-interface-type; - description - "MPEG transport interface."; - } - identity sixToFour { - base iana-interface-type; - status deprecated; - description - "6to4 interface (DEPRECATED)."; - reference - "RFC 4087 - IP Tunnel MIB"; - } - identity gtp { - base iana-interface-type; - description - "GTP (GPRS Tunneling Protocol)."; - } - identity pdnEtherLoop1 { - base iana-interface-type; - description - "Paradyne EtherLoop 1."; - } - identity pdnEtherLoop2 { - base iana-interface-type; - description - "Paradyne EtherLoop 2."; - } - identity opticalChannelGroup { - base iana-interface-type; - description - "Optical Channel Group."; - } - identity homepna { - base iana-interface-type; - description - "HomePNA ITU-T G.989."; - } - identity gfp { - base iana-interface-type; - description - "Generic Framing Procedure (GFP)."; - } - identity ciscoISLvlan { - base iana-interface-type; - description - "Layer 2 Virtual LAN using Cisco ISL."; - } - identity actelisMetaLOOP { - base iana-interface-type; - description - "Acteleis proprietary MetaLOOP High Speed Link."; - } - identity fcipLink { - base iana-interface-type; - description - "FCIP Link."; - } - identity rpr { - base iana-interface-type; - description - "Resilient Packet Ring Interface Type."; - } - identity qam { - base iana-interface-type; - description - "RF Qam Interface."; - } - identity lmp { - base iana-interface-type; - description - "Link Management Protocol."; - reference - "RFC 4327 - Link Management Protocol (LMP) Management - Information Base (MIB)"; - } - identity cblVectaStar { - base iana-interface-type; - description - "Cambridge Broadband Networks Limited VectaStar."; - } - identity docsCableMCmtsDownstream { - base iana-interface-type; - description - "CATV Modular CMTS Downstream Interface."; - } - identity adsl2 { - base iana-interface-type; - status deprecated; - description - "Asymmetric Digital Subscriber Loop Version 2 - (DEPRECATED/OBSOLETED - please use adsl2plus(238) - instead)."; - reference - "RFC 4706 - Definitions of Managed Objects for Asymmetric - Digital Subscriber Line 2 (ADSL2)"; - } - identity macSecControlledIF { - base iana-interface-type; - description - "MACSecControlled."; - } - identity macSecUncontrolledIF { - base iana-interface-type; - description - "MACSecUncontrolled."; - } - identity aviciOpticalEther { - base iana-interface-type; - description - "Avici Optical Ethernet Aggregate."; - } - identity atmbond { - base iana-interface-type; - description - "atmbond."; - } - identity voiceFGDOS { - base iana-interface-type; - description - "Voice FGD Operator Services."; - } - identity mocaVersion1 { - base iana-interface-type; - description - "MultiMedia over Coax Alliance (MoCA) Interface - as documented in information provided privately to IANA."; - } - identity ieee80216WMAN { - base iana-interface-type; - description - "IEEE 802.16 WMAN interface."; - } - identity adsl2plus { - base iana-interface-type; - description - "Asymmetric Digital Subscriber Loop Version 2 - - Version 2 Plus and all variants."; - } - identity dvbRcsMacLayer { - base iana-interface-type; - description - "DVB-RCS MAC Layer."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity dvbTdm { - base iana-interface-type; - description - "DVB Satellite TDM."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity dvbRcsTdma { - base iana-interface-type; - description - "DVB-RCS TDMA."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity x86Laps { - base iana-interface-type; - description - "LAPS based on ITU-T X.86/Y.1323."; - } - identity wwanPP { - base iana-interface-type; - description - "3GPP WWAN."; - } - identity wwanPP2 { - base iana-interface-type; - description - "3GPP2 WWAN."; - } - identity voiceEBS { - base iana-interface-type; - description - "Voice P-phone EBS physical interface."; - } - identity ifPwType { - base iana-interface-type; - description - "Pseudowire interface type."; - reference - "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)"; - } - identity ilan { - base iana-interface-type; - description - "Internal LAN on a bridge per IEEE 802.1ap."; - } - identity pip { - base iana-interface-type; - description - "Provider Instance Port on a bridge per IEEE 802.1ah PBB."; - } - identity aluELP { - base iana-interface-type; - description - "Alcatel-Lucent Ethernet Link Protection."; - } - identity gpon { - base iana-interface-type; - description - "Gigabit-capable passive optical networks (G-PON) as per - ITU-T G.948."; - } - identity vdsl2 { - base iana-interface-type; - description - "Very high speed digital subscriber line Version 2 - (as per ITU-T Recommendation G.993.2)."; - reference - "RFC 5650 - Definitions of Managed Objects for Very High - Speed Digital Subscriber Line 2 (VDSL2)"; - } - identity capwapDot11Profile { - base iana-interface-type; - description - "WLAN Profile Interface."; - reference - "RFC 5834 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Binding MIB for - IEEE 802.11"; - } - identity capwapDot11Bss { - base iana-interface-type; - description - "WLAN BSS Interface."; - reference - "RFC 5834 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Binding MIB for - IEEE 802.11"; - } - identity capwapWtpVirtualRadio { - base iana-interface-type; - description - "WTP Virtual Radio Interface."; - reference - "RFC 5833 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Base MIB"; - } - identity bits { - base iana-interface-type; - description - "bitsport."; - } - identity docsCableUpstreamRfPort { - base iana-interface-type; - description - "DOCSIS CATV Upstream RF Port."; - } - identity cableDownstreamRfPort { - base iana-interface-type; - description - "CATV downstream RF Port."; - } - identity vmwareVirtualNic { - base iana-interface-type; - description - "VMware Virtual Network Interface."; - } - identity ieee802154 { - base iana-interface-type; - description - "IEEE 802.15.4 WPAN interface."; - reference - "IEEE 802.15.4-2006"; - } - identity otnOdu { - base iana-interface-type; - description - "OTN Optical Data Unit."; - } - identity otnOtu { - base iana-interface-type; - description - "OTN Optical channel Transport Unit."; - } - identity ifVfiType { - base iana-interface-type; - description - "VPLS Forwarding Instance Interface Type."; - } - identity g9981 { - base iana-interface-type; - description - "G.998.1 bonded interface."; - } - identity g9982 { - base iana-interface-type; - description - "G.998.2 bonded interface."; - } - identity g9983 { - base iana-interface-type; - description - "G.998.3 bonded interface."; - } - identity aluEpon { - base iana-interface-type; - description - "Ethernet Passive Optical Networks (E-PON)."; - } - identity aluEponOnu { - base iana-interface-type; - description - "EPON Optical Network Unit."; - } - identity aluEponPhysicalUni { - base iana-interface-type; - description - "EPON physical User to Network interface."; - } - identity aluEponLogicalLink { - base iana-interface-type; - description - "The emulation of a point-to-point link over the EPON - layer."; - } - identity aluGponOnu { - base iana-interface-type; - description - "GPON Optical Network Unit."; - reference - "ITU-T G.984.2"; - } - identity aluGponPhysicalUni { - base iana-interface-type; - description - "GPON physical User to Network interface."; - reference - "ITU-T G.984.2"; - } - identity vmwareNicTeam { - base iana-interface-type; - description - "VMware NIC Team."; - } -} diff --git a/device-operator/internal/model/yang/ietf-inet-types.yang b/device-operator/internal/model/yang/ietf-inet-types.yang deleted file mode 100644 index 08fb3b5..0000000 --- a/device-operator/internal/model/yang/ietf-inet-types.yang +++ /dev/null @@ -1,400 +0,0 @@ -module ietf-inet-types { - namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; - prefix "inet"; - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - contact - "WG Web: - WG List: - WG Chair: David Kessens - - WG Chair: Juergen Schoenwaelder - - Editor: Juergen Schoenwaelder - "; - description - "This module contains a collection of generally useful derived - YANG data types for Internet addresses and related things. - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - revision 2013-07-15 { - description - "This revision adds the following new data types: - - ip-address-no-zone - - ipv4-address-no-zone - - ipv6-address-no-zone"; - reference - "RFC 6991: Common YANG Data Types"; - } - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - /*** collection of types related to protocol fields ***/ - typedef ip-version { - type enumeration { - enum unknown { - value "0"; - description - "An unknown or unspecified version of the Internet - protocol."; - } - enum ipv4 { - value "1"; - description - "The IPv4 protocol as defined in RFC 791."; - } - enum ipv6 { - value "2"; - description - "The IPv6 protocol as defined in RFC 2460."; - } - } - description - "This value represents the version of the IP protocol. - In the value set and its semantics, this type is equivalent - to the InetVersion textual convention of the SMIv2."; - reference - "RFC 791: Internet Protocol - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - typedef dscp { - type uint8 { - range "0..63"; - } - description - "The dscp type represents a Differentiated Services Code Point - that may be used for marking packets in a traffic stream. - In the value set and its semantics, this type is equivalent - to the Dscp textual convention of the SMIv2."; - reference - "RFC 3289: Management Information Base for the Differentiated - Services Architecture - RFC 2474: Definition of the Differentiated Services Field - (DS Field) in the IPv4 and IPv6 Headers - RFC 2780: IANA Allocation Guidelines For Values In - the Internet Protocol and Related Headers"; - } - typedef ipv6-flow-label { - type uint32 { - range "0..1048575"; - } - description - "The ipv6-flow-label type represents the flow identifier or Flow - Label in an IPv6 packet header that may be used to - discriminate traffic flows. - In the value set and its semantics, this type is equivalent - to the IPv6FlowLabel textual convention of the SMIv2."; - reference - "RFC 3595: Textual Conventions for IPv6 Flow Label - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; - } - typedef port-number { - type uint16 { - range "0..65535"; - } - description - "The port-number type represents a 16-bit port number of an - Internet transport-layer protocol such as UDP, TCP, DCCP, or - SCTP. Port numbers are assigned by IANA. A current list of - all assignments is available from . - Note that the port number value zero is reserved by IANA. In - situations where the value zero does not make sense, it can - be excluded by subtyping the port-number type. - In the value set and its semantics, this type is equivalent - to the InetPortNumber textual convention of the SMIv2."; - reference - "RFC 768: User Datagram Protocol - RFC 793: Transmission Control Protocol - RFC 4960: Stream Control Transmission Protocol - RFC 4340: Datagram Congestion Control Protocol (DCCP) - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - /*** collection of types related to autonomous systems ***/ - typedef as-number { - type uint32; - description - "The as-number type represents autonomous system numbers - which identify an Autonomous System (AS). An AS is a set - of routers under a single technical administration, using - an interior gateway protocol and common metrics to route - packets within the AS, and using an exterior gateway - protocol to route packets to other ASes. IANA maintains - the AS number space and has delegated large parts to the - regional registries. - Autonomous system numbers were originally limited to 16 - bits. BGP extensions have enlarged the autonomous system - number space to 32 bits. This type therefore uses an uint32 - base type without a range restriction in order to support - a larger autonomous system number space. - In the value set and its semantics, this type is equivalent - to the InetAutonomousSystemNumber textual convention of - the SMIv2."; - reference - "RFC 1930: Guidelines for creation, selection, and registration - of an Autonomous System (AS) - RFC 4271: A Border Gateway Protocol 4 (BGP-4) - RFC 4001: Textual Conventions for Internet Network Addresses - RFC 6793: BGP Support for Four-Octet Autonomous System (AS) - Number Space"; - } - /*** collection of types related to IP addresses and hostnames ***/ - typedef ip-address { - type union { - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "The ip-address type represents an IP address and is IP - version neutral. The format of the textual representation - implies the IP version. This type supports scoped addresses - by allowing zone identifiers in the address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - typedef ipv4-address { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '(%[\p{N}\p{L}]+)?'; - } - description - "The ipv4-address type represents an IPv4 address in - dotted-quad notation. The IPv4 address may include a zone - index, separated by a % sign. - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - The canonical format for the zone index is the numerical - format"; - } - typedef ipv6-address { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(%[\p{N}\p{L}]+)?'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(%.+)?'; - } - description - "The ipv6-address type represents an IPv6 address in full, - mixed, shortened, and shortened-mixed notation. The IPv6 - address may include a zone index, separated by a % sign. - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - The canonical format of IPv6 addresses uses the textual - representation defined in Section 4 of RFC 5952. The - canonical format for the zone index is the numerical - format as described in Section 11.2 of RFC 4007."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - typedef ip-address-no-zone { - type union { - type inet:ipv4-address-no-zone; - type inet:ipv6-address-no-zone; - } - description - "The ip-address-no-zone type represents an IP address and is - IP version neutral. The format of the textual representation - implies the IP version. This type does not support scoped - addresses since it does not allow zone identifiers in the - address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - typedef ipv4-address-no-zone { - type inet:ipv4-address { - pattern '[0-9\.]*'; - } - description - "An IPv4 address without a zone index. This type, derived from - ipv4-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - } - typedef ipv6-address-no-zone { - type inet:ipv6-address { - pattern '[0-9a-fA-F:\.]*'; - } - description - "An IPv6 address without a zone index. This type, derived from - ipv6-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - typedef ip-prefix { - type union { - type inet:ipv4-prefix; - type inet:ipv6-prefix; - } - description - "The ip-prefix type represents an IP prefix and is IP - version neutral. The format of the textual representations - implies the IP version."; - } - typedef ipv4-prefix { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; - } - description - "The ipv4-prefix type represents an IPv4 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 32. - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - The canonical format of an IPv4 prefix has all bits of - the IPv4 address set to zero that are not part of the - IPv4 prefix."; - } - typedef ipv6-prefix { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(/.+)'; - } - description - "The ipv6-prefix type represents an IPv6 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 128. - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - The IPv6 address should have all bits that do not belong - to the prefix set to zero. - The canonical format of an IPv6 prefix has all bits of - the IPv6 address set to zero that are not part of the - IPv6 prefix. Furthermore, the IPv6 address is represented - as defined in Section 4 of RFC 5952."; - reference - "RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - /*** collection of domain name and URI types ***/ - typedef domain-name { - type string { - pattern - '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' - + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' - + '|\.'; - length "1..253"; - } - description - "The domain-name type represents a DNS domain name. The - name SHOULD be fully qualified whenever possible. - Internet domain names are only loosely specified. Section - 3.5 of RFC 1034 recommends a syntax (modified in Section - 2.1 of RFC 1123). The pattern above is intended to allow - for current practice in domain name use, and some possible - future expansion. It is designed to hold various types of - domain names, including names used for A or AAAA records - (host names) and other records, such as SRV records. Note - that Internet host names have a stricter syntax (described - in RFC 952) than the DNS recommendations in RFCs 1034 and - 1123, and that systems that want to store host names in - schema nodes using the domain-name type are recommended to - adhere to this stricter standard to ensure interoperability. - The encoding of DNS names in the DNS protocol is limited - to 255 characters. Since the encoding consists of labels - prefixed by a length bytes and there is a trailing NULL - byte, only 253 characters can appear in the textual dotted - notation. - The description clause of schema nodes using the domain-name - type MUST describe when and how these names are resolved to - IP addresses. Note that the resolution of a domain-name value - may require to query multiple DNS records (e.g., A for IPv4 - and AAAA for IPv6). The order of the resolution process and - which DNS record takes precedence can either be defined - explicitly or may depend on the configuration of the - resolver. - Domain-name values use the US-ASCII encoding. Their canonical - format uses lowercase US-ASCII characters. Internationalized - domain names MUST be A-labels as per RFC 5890."; - reference - "RFC 952: DoD Internet Host Table Specification - RFC 1034: Domain Names - Concepts and Facilities - RFC 1123: Requirements for Internet Hosts -- Application - and Support - RFC 2782: A DNS RR for specifying the location of services - (DNS SRV) - RFC 5890: Internationalized Domain Names in Applications - (IDNA): Definitions and Document Framework"; - } - typedef host { - type union { - type inet:ip-address; - type inet:domain-name; - } - description - "The host type represents either an IP address or a DNS - domain name."; - } - typedef uri { - type string; - description - "The uri type represents a Uniform Resource Identifier - (URI) as defined by STD 66. - Objects using the uri type MUST be in US-ASCII encoding, - and MUST be normalized as described by RFC 3986 Sections - 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary - percent-encoding is removed, and all case-insensitive - characters are set to lowercase except for hexadecimal - digits, which are normalized to uppercase as described in - Section 6.2.2.1. - The purpose of this normalization is to help provide - unique URIs. Note that this normalization is not - sufficient to provide uniqueness. Two URIs that are - textually distinct after this normalization may still be - equivalent. - Objects using the uri type may restrict the schemes that - they permit. For example, 'data:' and 'urn:' schemes - might not be appropriate. - A zero-length URI is not a valid URI. This can be used to - express 'URI absent' where required. - In the value set and its semantics, this type is equivalent - to the Uri SMIv2 textual convention defined in RFC 5017."; - reference - "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax - RFC 3305: Report from the Joint W3C/IETF URI Planning Interest - Group: Uniform Resource Identifiers (URIs), URLs, - and Uniform Resource Names (URNs): Clarifications - and Recommendations - RFC 5017: MIB Textual Conventions for Uniform Resource - Identifiers (URIs)"; - } -} diff --git a/device-operator/internal/model/yang/ietf-interfaces.yang b/device-operator/internal/model/yang/ietf-interfaces.yang deleted file mode 100644 index a84d2c2..0000000 --- a/device-operator/internal/model/yang/ietf-interfaces.yang +++ /dev/null @@ -1,602 +0,0 @@ -module ietf-interfaces { - namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; - prefix if; - import ietf-yang-types { - prefix yang; - } - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - contact - "WG Web: - WG List: - WG Chair: Thomas Nadeau - - WG Chair: Juergen Schoenwaelder - - Editor: Martin Bjorklund - "; - description - "This module contains a collection of YANG definitions for - managing network interfaces. - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 7223; see - the RFC itself for full legal notices."; - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7223: A YANG Data Model for Interface Management"; - } - /* - * Typedefs - */ - typedef interface-ref { - type leafref { - path "/if:interfaces/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - configured interfaces."; - } - typedef interface-state-ref { - type leafref { - path "/if:interfaces-state/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - the operationally present interfaces."; - } - /* - * Identities - */ - identity interface-type { - description - "Base identity from which specific interface types are - derived."; - } - /* - * Features - */ - feature arbitrary-names { - description - "This feature indicates that the device allows user-controlled - interfaces to be named arbitrarily."; - } - feature pre-provisioning { - description - "This feature indicates that the device supports - pre-provisioning of interface configuration, i.e., it is - possible to configure an interface whose physical interface - hardware is not present on the device."; - } - feature if-mib { - description - "This feature indicates that the device implements - the IF-MIB."; - reference - "RFC 2863: The Interfaces Group MIB"; - } - /* - * Configuration data nodes - */ - container interfaces { - description - "Interface configuration parameters."; - list interface { - key "name"; - description - "The list of configured interfaces on the device. - The operational state of an interface is available in the - /interfaces-state/interface list. If the configuration of a - system-controlled interface cannot be used by the system - (e.g., the interface hardware present does not match the - interface type), then the configuration is not applied to - the system-controlled interface shown in the - /interfaces-state/interface list. If the configuration - of a user-controlled interface cannot be used by the system, - the configured interface is not instantiated in the - /interfaces-state/interface list."; - leaf name { - type string; - description - "The name of the interface. - A device MAY restrict the allowed values for this leaf, - possibly depending on the type of the interface. - For system-controlled interfaces, this leaf is the - device-specific name of the interface. The 'config false' - list /interfaces-state/interface contains the currently - existing interfaces on the device. - If a client tries to create configuration for a - system-controlled interface that is not present in the - /interfaces-state/interface list, the server MAY reject - the request if the implementation does not support - pre-provisioning of interfaces or if the name refers to - an interface that can never exist in the system. A - NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case. - If the device supports pre-provisioning of interface - configuration, the 'pre-provisioning' feature is - advertised. - If the device allows arbitrarily named user-controlled - interfaces, the 'arbitrary-names' feature is advertised. - When a configured user-controlled interface is created by - the system, it is instantiated with the same name in the - /interface-state/interface list."; - } - leaf description { - type string; - description - "A textual description of the interface. - A server implementation MAY map this leaf to the ifAlias - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifAlias. The definition of - such a mechanism is outside the scope of this document. - Since ifAlias is defined to be stored in non-volatile - storage, the MIB implementation MUST map ifAlias to the - value of 'description' in the persistently stored - datastore. - Specifically, if the device supports ':startup', when - ifAlias is read the device MUST return the value of - 'description' in the 'startup' datastore, and when it is - written, it MUST be written to the 'running' and 'startup' - datastores. Note that it is up to the implementation to - decide whether to modify this single leaf in 'startup' or - perform an implicit copy-config from 'running' to - 'startup'. - If the device does not support ':startup', ifAlias MUST - be mapped to the 'description' leaf in the 'running' - datastore."; - reference - "RFC 2863: The Interfaces Group MIB - ifAlias"; - } - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface. - When an interface entry is created, a server MAY - initialize the type leaf with a valid value, e.g., if it - is possible to derive the type from the name of the - interface. - If a client tries to set the type of an interface to a - value that can never be used by the system, e.g., if the - type is not supported or if the type does not match the - name of the interface, the server MUST reject the request. - A NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - leaf enabled { - type boolean; - default "true"; - description - "This leaf contains the configured, desired state of the - interface. - Systems that implement the IF-MIB use the value of this - leaf in the 'running' datastore to set - IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry - has been initialized, as described in RFC 2863. - Changes in this leaf in the 'running' datastore are - reflected in ifAdminStatus, but if ifAdminStatus is - changed over SNMP, this leaf is not affected."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - leaf link-up-down-trap-enable { - if-feature if-mib; - type enumeration { - enum enabled { - value 1; - } - enum disabled { - value 2; - } - } - description - "Controls whether linkUp/linkDown SNMP notifications - should be generated for this interface. - If this node is not configured, the value 'enabled' is - operationally used by the server for interfaces that do - not operate on top of any other interface (i.e., there are - no 'lower-layer-if' entries), and 'disabled' otherwise."; - reference - "RFC 2863: The Interfaces Group MIB - - ifLinkUpDownTrapEnable"; - } - } - } - /* - * Operational state data nodes - */ - container interfaces-state { - config false; - description - "Data nodes for the operational state of interfaces."; - list interface { - key "name"; - description - "The list of interfaces on the device. - System-controlled interfaces created by the system are - always present in this list, whether they are configured or - not."; - leaf name { - type string; - description - "The name of the interface. - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - mandatory true; - description - "The desired state of the interface. - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - mandatory true; - description - "The current operational state of the interface. - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - leaf last-change { - type yang:date-and-time; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - mandatory true; - description - "The ifIndex value for the ifEntry represented by this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - leaf phys-address { - type yang:phys-address; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - leaf-list higher-layer-if { - type interface-state-ref; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - leaf-list lower-layer-if { - type interface-state-ref; - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - leaf speed { - type yang:gauge64; - units "bits/second"; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - container statistics { - description - "A collection of interface-related statistics objects."; - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - leaf in-octets { - type yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - leaf in-unicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - leaf in-broadcast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - leaf in-multicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - leaf in-discards { - type yang:counter32; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - leaf in-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - leaf in-unknown-protos { - type yang:counter32; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - leaf out-octets { - type yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - leaf out-unicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - leaf out-broadcast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - leaf out-multicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - leaf out-discards { - type yang:counter32; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - leaf out-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - } - } -} diff --git a/device-operator/internal/model/yang/ietf-yang-types.yang b/device-operator/internal/model/yang/ietf-yang-types.yang deleted file mode 100644 index 2a914e6..0000000 --- a/device-operator/internal/model/yang/ietf-yang-types.yang +++ /dev/null @@ -1,404 +0,0 @@ -module ietf-yang-types { - namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; - prefix "yang"; - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - contact - "WG Web: - WG List: - WG Chair: David Kessens - - WG Chair: Juergen Schoenwaelder - - Editor: Juergen Schoenwaelder - "; - description - "This module contains a collection of generally useful derived - YANG data types. - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - revision 2013-07-15 { - description - "This revision adds the following new data types: - - yang-identifier - - hex-string - - uuid - - dotted-quad"; - reference - "RFC 6991: Common YANG Data Types"; - } - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - /*** collection of counter and gauge types ***/ - typedef counter32 { - type uint32; - description - "The counter32 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter32 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - The counter32 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter32. - In the value set and its semantics, this type is equivalent - to the Counter32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - typedef zero-based-counter32 { - type yang:counter32; - default "0"; - description - "The zero-based-counter32 type represents a counter32 - that has the defined 'initial' value zero. - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter32 textual convention of the SMIv2."; - reference - "RFC 4502: Remote Network Monitoring Management Information - Base Version 2"; - } - typedef counter64 { - type uint64; - description - "The counter64 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter64 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - The counter64 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter64. - In the value set and its semantics, this type is equivalent - to the Counter64 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - typedef zero-based-counter64 { - type yang:counter64; - default "0"; - description - "The zero-based-counter64 type represents a counter64 that - has the defined 'initial' value zero. - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter64 textual convention of the SMIv2."; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - typedef gauge32 { - type uint32; - description - "The gauge32 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^32-1 (4294967295 decimal), and - the minimum value cannot be smaller than 0. The value of - a gauge32 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge32 also decreases (increases). - In the value set and its semantics, this type is equivalent - to the Gauge32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - typedef gauge64 { - type uint64; - description - "The gauge64 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^64-1 (18446744073709551615), and - the minimum value cannot be smaller than 0. The value of - a gauge64 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge64 also decreases (increases). - In the value set and its semantics, this type is equivalent - to the CounterBasedGauge64 SMIv2 textual convention defined - in RFC 2856"; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - /*** collection of identifier-related types ***/ - typedef object-identifier { - type string { - pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' - + '(\.(0|([1-9]\d*)))*'; - } - description - "The object-identifier type represents administratively - assigned names in a registration-hierarchical-name tree. - Values of this type are denoted as a sequence of numerical - non-negative sub-identifier values. Each sub-identifier - value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers - are separated by single dots and without any intermediate - whitespace. - The ASN.1 standard restricts the value space of the first - sub-identifier to 0, 1, or 2. Furthermore, the value space - of the second sub-identifier is restricted to the range - 0 to 39 if the first sub-identifier is 0 or 1. Finally, - the ASN.1 standard requires that an object identifier - has always at least two sub-identifiers. The pattern - captures these restrictions. - Although the number of sub-identifiers is not limited, - module designers should realize that there may be - implementations that stick with the SMIv2 limit of 128 - sub-identifiers. - This type is a superset of the SMIv2 OBJECT IDENTIFIER type - since it is not restricted to 128 sub-identifiers. Hence, - this type SHOULD NOT be used to represent the SMIv2 OBJECT - IDENTIFIER type; the object-identifier-128 type SHOULD be - used instead."; - reference - "ISO9834-1: Information technology -- Open Systems - Interconnection -- Procedures for the operation of OSI - Registration Authorities: General procedures and top - arcs of the ASN.1 Object Identifier tree"; - } - typedef object-identifier-128 { - type object-identifier { - pattern '\d*(\.\d*){1,127}'; - } - description - "This type represents object-identifiers restricted to 128 - sub-identifiers. - In the value set and its semantics, this type is equivalent - to the OBJECT IDENTIFIER type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - typedef yang-identifier { - type string { - length "1..max"; - pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; - pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; - } - description - "A YANG identifier string as defined by the 'identifier' - rule in Section 12 of RFC 6020. An identifier must - start with an alphabetic character or an underscore - followed by an arbitrary sequence of alphabetic or - numeric characters, underscores, hyphens, or dots. - A YANG identifier MUST NOT start with any possible - combination of the lowercase or uppercase character - sequence 'xml'."; - reference - "RFC 6020: YANG - A Data Modeling Language for the Network - Configuration Protocol (NETCONF)"; - } - /*** collection of types related to date and time***/ - typedef date-and-time { - type string { - pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' - + '(Z|[\+\-]\d{2}:\d{2})'; - } - description - "The date-and-time type is a profile of the ISO 8601 - standard for representation of dates and times using the - Gregorian calendar. The profile is defined by the - date-time production in Section 5.6 of RFC 3339. - The date-and-time type is compatible with the dateTime XML - schema type with the following notable exceptions: - (a) The date-and-time type does not allow negative years. - (b) The date-and-time time-offset -00:00 indicates an unknown - time zone (see RFC 3339) while -00:00 and +00:00 and Z - all represent the same time zone in dateTime. - (c) The canonical format (see below) of data-and-time values - differs from the canonical format used by the dateTime XML - schema type, which requires all times to be in UTC using - the time-offset 'Z'. - This type is not equivalent to the DateAndTime textual - convention of the SMIv2 since RFC 3339 uses a different - separator between full-date and full-time and provides - higher resolution of time-secfrac. - The canonical format for date-and-time values with a known time - zone uses a numeric time zone offset that is calculated using - the device's configured known offset to UTC time. A change of - the device's offset to UTC time will cause date-and-time values - to change accordingly. Such changes might happen periodically - in case a server follows automatically daylight saving time - (DST) time zone offset changes. The canonical format for - date-and-time values with an unknown time zone (usually - referring to the notion of local time) uses the time-offset - -00:00."; - reference - "RFC 3339: Date and Time on the Internet: Timestamps - RFC 2579: Textual Conventions for SMIv2 - XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; - } - typedef timeticks { - type uint32; - description - "The timeticks type represents a non-negative integer that - represents the time, modulo 2^32 (4294967296 decimal), in - hundredths of a second between two epochs. When a schema - node is defined that uses this type, the description of - the schema node identifies both of the reference epochs. - In the value set and its semantics, this type is equivalent - to the TimeTicks type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - typedef timestamp { - type yang:timeticks; - description - "The timestamp type represents the value of an associated - timeticks schema node at which a specific occurrence - happened. The specific occurrence must be defined in the - description of any schema node defined using this type. When - the specific occurrence occurred prior to the last time the - associated timeticks attribute was zero, then the timestamp - value is zero. Note that this requires all timestamp values - to be reset to zero when the value of the associated timeticks - attribute reaches 497+ days and wraps around to zero. - The associated timeticks schema node must be specified - in the description of any schema node using this type. - In the value set and its semantics, this type is equivalent - to the TimeStamp textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - /*** collection of generic address types ***/ - typedef phys-address { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "Represents media- or physical-level addresses represented - as a sequence octets, each octet represented by two hexadecimal - numbers. Octets are separated by colons. The canonical - representation uses lowercase characters. - In the value set and its semantics, this type is equivalent - to the PhysAddress textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - typedef mac-address { - type string { - pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; - } - description - "The mac-address type represents an IEEE 802 MAC address. - The canonical representation uses lowercase characters. - In the value set and its semantics, this type is equivalent - to the MacAddress textual convention of the SMIv2."; - reference - "IEEE 802: IEEE Standard for Local and Metropolitan Area - Networks: Overview and Architecture - RFC 2579: Textual Conventions for SMIv2"; - } - /*** collection of XML-specific types ***/ - typedef xpath1.0 { - type string; - description - "This type represents an XPATH 1.0 expression. - When a schema node is defined that uses this type, the - description of the schema node MUST specify the XPath - context in which the XPath expression is evaluated."; - reference - "XPATH: XML Path Language (XPath) Version 1.0"; - } - /*** collection of string types ***/ - typedef hex-string { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "A hexadecimal string with octets represented as hex digits - separated by colons. The canonical representation uses - lowercase characters."; - } - typedef uuid { - type string { - pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' - + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; - } - description - "A Universally Unique IDentifier in the string representation - defined in RFC 4122. The canonical representation uses - lowercase characters. - The following is an example of a UUID in string representation: - f81d4fae-7dec-11d0-a765-00a0c91e6bf6 - "; - reference - "RFC 4122: A Universally Unique IDentifier (UUID) URN - Namespace"; - } - typedef dotted-quad { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; - } - description - "An unsigned 32-bit number expressed in the dotted-quad - notation, i.e., four octets written as decimal numbers - and separated with the '.' (full stop) character."; - } -} diff --git a/device-operator/internal/model/yang/openconfig-extensions.yang b/device-operator/internal/model/yang/openconfig-extensions.yang deleted file mode 100644 index 179b9ea..0000000 --- a/device-operator/internal/model/yang/openconfig-extensions.yang +++ /dev/null @@ -1,89 +0,0 @@ -module openconfig-extensions { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/openconfig-ext"; - - prefix "oc-ext"; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module provides extensions to the YANG language to allow - OpenConfig specific functionality and meta-data to be defined."; - - revision "2017-01-29" { - description - "Added extension for annotating encrypted values."; - reference "TBD"; - } - - revision "2015-10-09" { - description - "Initial OpenConfig public release"; - reference "TBD"; - } - - revision "2015-10-05" { - description - "Initial revision"; - reference "TBD"; - } - - // extension statements - extension openconfig-version { - argument "semver" { - yin-element false; - } - description - "The OpenConfig version number for the module. This is - expressed as a semantic version number of the form: - x.y.z - where: - * x corresponds to the major version, - * y corresponds to a minor version, - * z corresponds to a patch version. - This version corresponds to the model file within which it is - defined, and does not cover the whole set of OpenConfig models. - Where several modules are used to build up a single block of - functionality, the same module version is specified across each - file that makes up the module. - - A major version number of 0 indicates that this model is still - in development (whether within OpenConfig or with industry - partners), and is potentially subject to change. - - Following a release of major version 1, all modules will - increment major revision number where backwards incompatible - changes to the model are made. - - The minor version is changed when features are added to the - model that do not impact current clients use of the model. - - The patch-level version is incremented when non-feature changes - (such as bugfixes or clarifications to human-readable - descriptions that do not impact model functionality) are made - that maintain backwards compatibility. - - The version number is stored in the module meta-data."; - } - - extension openconfig-encrypted-value { - description - "This extension provides an annotation on schema nodes to - indicate that the corresponding value should be stored and - reported in encrypted form. - - Clients reading the configuration or applied configuration - for the node should expect to receive only the encrypted value. - This annotation may be used on nodes such as secure passwords - in which the device never reports a cleartext value, even - if the input is provided as cleartext."; - } -} \ No newline at end of file diff --git a/device-operator/internal/model/yang/openconfig-if-aggregate.yang b/device-operator/internal/model/yang/openconfig-if-aggregate.yang deleted file mode 100644 index 0fd5b3f..0000000 --- a/device-operator/internal/model/yang/openconfig-if-aggregate.yang +++ /dev/null @@ -1,192 +0,0 @@ -module openconfig-if-aggregate { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/aggregate"; - - prefix "oc-lag"; - - // import some basic types - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ethernet { prefix oc-eth; } - import iana-if-type { prefix ift; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Model for managing aggregated (aka bundle, LAG) interfaces."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - - - typedef aggregation-type { - type enumeration { - enum LACP { - description "LAG managed by LACP"; - } - enum STATIC { - description "Statically configured bundle / LAG"; - } - } - description - "Type to define the lag-type, i.e., how the LAG is - defined and managed"; - } - - // grouping statements - - - grouping aggregation-logical-config { - description - "Configuration data for aggregate interfaces"; - - - leaf lag-type { - type aggregation-type; - description - "Sets the type of LAG, i.e., how it is - configured / maintained"; - } - - leaf min-links { - type uint16; - description - "Specifies the mininum number of member - interfaces that must be active for the aggregate interface - to be available"; - } - } - - grouping aggregation-logical-state { - description - "Operational state data for aggregate interfaces"; - - leaf lag-speed { - type uint32; - units Mbps; - description - "Reports effective speed of the aggregate interface, - based on speed of active member interfaces"; - } - - leaf-list member { - when "oc-lag:lag-type = 'STATIC'" { - description - "The simple list of member interfaces is active - when the aggregate is statically configured"; - } - type oc-if:base-interface-ref; - description - "List of current member interfaces for the aggregate, - expressed as references to existing interfaces"; - } - } - - grouping aggregation-logical-top { - description "Top-level data definitions for LAGs"; - - container aggregation { - - description - "Options for logical interfaces representing - aggregates"; - - container config { - description - "Configuration variables for logical aggregate / - LAG interfaces"; - - uses aggregation-logical-config; - } - - container state { - - config false; - description - "Operational state variables for logical - aggregate / LAG interfaces"; - - uses aggregation-logical-config; - uses aggregation-logical-state; - - } - } - } - - grouping ethernet-if-aggregation-config { - description - "Adds configuration items for Ethernet interfaces - belonging to a logical aggregate / LAG"; - - leaf aggregate-id { - type leafref { - path "/oc-if:interfaces/oc-if:interface/oc-if:name"; - } - description - "Specify the logical aggregate interface to which - this interface belongs"; - } - } - - // data definition statements - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface" { - when "oc-if:type = 'ift:ieee8023adLag'" { - description "active when the interface is set to type LAG"; - } - description "Adds LAG configuration to the interface module"; - - uses aggregation-logical-top; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + - "oc-eth:config" { - when "oc-if:type = 'ift:ethernetCsmacd'" { - description "active when the interface is Ethernet"; - } - description "Adds LAG settings to individual Ethernet - interfaces"; - - uses ethernet-if-aggregation-config; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + - "oc-eth:state" { - when "oc-if:type = 'ift:ethernetCsmacd'" { - description "active when the interface is Ethernet"; - } - description "Adds LAG settings to individual Ethernet - interfaces"; - - uses ethernet-if-aggregation-config; - } - - // rpc statements - - // notification statements - -} diff --git a/device-operator/internal/model/yang/openconfig-if-ethernet.yang b/device-operator/internal/model/yang/openconfig-if-ethernet.yang deleted file mode 100644 index 9d26e9d..0000000 --- a/device-operator/internal/model/yang/openconfig-if-ethernet.yang +++ /dev/null @@ -1,345 +0,0 @@ -module openconfig-if-ethernet { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/ethernet"; - - prefix "oc-eth"; - - // import some basic types - import openconfig-interfaces { prefix oc-if; } - import iana-if-type { prefix ift; } - import ietf-yang-types { prefix yang; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Model for managing Ethernet interfaces -- augments the IETF YANG - model for interfaces described by RFC 7223"; - - oc-ext:openconfig-version "1.1.0"; - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity ETHERNET_SPEED { - description "base type to specify available Ethernet link - speeds"; - } - - identity SPEED_10MB { - base ETHERNET_SPEED; - description "10 Mbps Ethernet"; - } - - identity SPEED_100MB { - base ETHERNET_SPEED; - description "100 Mbps Ethernet"; - } - - identity SPEED_1GB { - base ETHERNET_SPEED; - description "1 GBps Ethernet"; - } - - identity SPEED_10GB { - base ETHERNET_SPEED; - description "10 GBps Ethernet"; - } - - identity SPEED_25GB { - base ETHERNET_SPEED; - description "25 GBps Ethernet"; - } - - identity SPEED_40GB { - base ETHERNET_SPEED; - description "40 GBps Ethernet"; - } - - identity SPEED_50GB { - base ETHERNET_SPEED; - description "50 GBps Ethernet"; - } - - identity SPEED_100GB { - base ETHERNET_SPEED; - description "100 GBps Ethernet"; - } - - identity SPEED_UNKNOWN { - base ETHERNET_SPEED; - description - "Interface speed is unknown. Systems may report - speed UNKNOWN when an interface is down or unpopuplated (e.g., - pluggable not present)."; - } - - // typedef statements - - - // grouping statements - - grouping ethernet-interface-config { - description "Configuration items for Ethernet interfaces"; - - leaf mac-address { - type yang:mac-address; - description - "Assigns a MAC address to the Ethernet interface. If not - specified, the corresponding operational state leaf is - expected to show the system-assigned MAC address."; - } - - leaf auto-negotiate { - type boolean; - default true; - description - "Set to TRUE to request the interface to auto-negotiate - transmission parameters with its peer interface. When - set to FALSE, the transmission parameters are specified - manually."; - reference - "IEEE 802.3-2012 auto-negotiation transmission parameters"; - } - - leaf duplex-mode { - type enumeration { - enum FULL { - description "Full duplex mode"; - } - enum HALF { - description "Half duplex mode"; - } - } - description - "When auto-negotiate is TRUE, this optionally sets the - duplex mode that will be advertised to the peer. If - unspecified, the interface should negotiate the duplex mode - directly (typically full-duplex). When auto-negotiate is - FALSE, this sets the duplex mode on the interface directly."; - } - - leaf port-speed { - type identityref { - base ETHERNET_SPEED; - } - description - "When auto-negotiate is TRUE, this optionally sets the - port-speed mode that will be advertised to the peer for - negotiation. If unspecified, it is expected that the - interface will select the highest speed available based on - negotiation. When auto-negotiate is set to FALSE, sets the - link speed to a fixed value -- supported values are defined - by ETHERNET_SPEED identities"; - } - - leaf enable-flow-control { - type boolean; - default false; - description - "Enable or disable flow control for this interface. - Ethernet flow control is a mechanism by which a receiver - may send PAUSE frames to a sender to stop transmission for - a specified time. - - This setting should override auto-negotiated flow control - settings. If left unspecified, and auto-negotiate is TRUE, - flow control mode is negotiated with the peer interface."; - reference - "IEEE 802.3x"; - } - } - - grouping ethernet-interface-state-counters { - description - "Ethernet-specific counters and statistics"; - - // ingress counters - - leaf in-mac-control-frames { - type yang:counter64; - description - "MAC layer control frames received on the interface"; - } - - leaf in-mac-pause-frames { - type yang:counter64; - description - "MAC layer PAUSE frames received on the interface"; - } - - leaf in-oversize-frames { - type yang:counter64; - description - "Number of oversize frames received on the interface"; - } - - leaf in-jabber-frames { - type yang:counter64; - description - "Number of jabber frames received on the - interface. Jabber frames are typically defined as oversize - frames which also have a bad CRC. Implementations may use - slightly different definitions of what constitutes a jabber - frame. Often indicative of a NIC hardware problem."; - } - - leaf in-fragment-frames { - type yang:counter64; - description - "Number of fragment frames received on the interface."; - } - - leaf in-8021q-frames { - type yang:counter64; - description - "Number of 802.1q tagged frames received on the interface"; - } - - leaf in-crc-errors { - type yang:counter64; - description - "Number of receive error events due to FCS/CRC check - failure"; - } - - // egress counters - - leaf out-mac-control-frames { - type yang:counter64; - description - "MAC layer control frames sent on the interface"; - } - - leaf out-mac-pause-frames { - type yang:counter64; - description - "MAC layer PAUSE frames sent on the interface"; - } - - leaf out-8021q-frames { - type yang:counter64; - description - "Number of 802.1q tagged frames sent on the interface"; - } - } - - grouping ethernet-interface-state { - description - "Grouping for defining Ethernet-specific operational state"; - - leaf hw-mac-address { - type yang:mac-address; - description - "Represenets the 'burned-in', or system-assigned, MAC - address for the Ethernet interface."; - } - - leaf effective-speed { - type uint32; - units Mbps; - description - "Reports the effective speed of the interface, e.g., the - negotiated speed if auto-negotiate is enabled"; - } - - leaf negotiated-duplex-mode { - type enumeration { - enum FULL { - description "Full duplex mode"; - } - enum HALF { - description "Half duplex mode"; - } - } - description - "When auto-negotiate is set to TRUE, and the interface has - completed auto-negotiation with the remote peer, this value - shows the duplex mode that has been negotiated."; - } - - leaf negotiated-port-speed { - type identityref { - base ETHERNET_SPEED; - } - description - "When auto-negotiate is set to TRUE, and the interface has - completed auto-negotiation with the remote peer, this value - shows the interface speed that has been negotiated."; - } - - container counters { - description "Ethernet interface counters"; - - uses ethernet-interface-state-counters; - - } - - } - - // data definition statements - - grouping ethernet-top { - description "top-level Ethernet config and state containers"; - - container ethernet { - description - "Top-level container for ethernet configuration - and state"; - - container config { - description "Configuration data for ethernet interfaces"; - - uses ethernet-interface-config; - - } - - container state { - - config false; - description "State variables for Ethernet interfaces"; - - uses ethernet-interface-config; - uses ethernet-interface-state; - - } - - } - } - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface" { - description "Adds addtional Ethernet-specific configuration to - interfaces model"; - - uses ethernet-top { - when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" { - description "Additional interface configuration parameters when - the interface type is Ethernet"; - } - } - } - - // rpc statements - - // notification statements - -} diff --git a/device-operator/internal/model/yang/openconfig-if-ip-ext.yang b/device-operator/internal/model/yang/openconfig-if-ip-ext.yang deleted file mode 100644 index 06a79c7..0000000 --- a/device-operator/internal/model/yang/openconfig-if-ip-ext.yang +++ /dev/null @@ -1,149 +0,0 @@ -module openconfig-if-ip-ext { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/ip-ext"; - - prefix "oc-ip-ext"; - - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ip { prefix oc-ip; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module adds extensions to the base IP configuration and - operational state model to support additional use cases."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - - // grouping statements - - grouping ipv6-autoconf-config { - description - "Configuration data for IPv6 address autoconfiguration"; - - leaf create-global-addresses { - type boolean; - default true; - description - "[adapted from IETF IP model RFC 7277] - - If enabled, the host creates global addresses as - described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration - Section 5.5"; - } - leaf create-temporary-addresses { - type boolean; - default false; - description - "[adapted from IETF IP model RFC 7277] - - If enabled, the host creates temporary addresses as - described in RFC 4941."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6"; - } - - leaf temporary-valid-lifetime { - type uint32; - units "seconds"; - default 604800; - description - "[adapted from IETF IP model RFC 7277] - - The time period during which the temporary address - is valid."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_VALID_LIFETIME"; - } - - leaf temporary-preferred-lifetime { - type uint32; - units "seconds"; - default 86400; - description - "[adapted from IETF IP model RFC 7277] - - The time period during which the temporary address is - preferred."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_PREFERRED_LIFETIME"; - } - } - - grouping ipv6-autoconf-state { - description - "Operational state data for IPv6 address autoconfiguration"; - - //TODO: placeholder for additional opstate for IPv6 autoconf - } - - grouping ipv6-autoconf-top { - description - "Top-level grouping for IPv6 address autoconfiguration"; - - container autoconf { - description - "Top-level container for IPv6 autoconf"; - - container config { - description - "[adapted from IETF IP model RFC 7277] - - Parameters to control the autoconfiguration of IPv6 - addresses, as described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - uses ipv6-autoconf-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses ipv6-autoconf-config; - uses ipv6-autoconf-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv6" { - description - "Adds address autoconfiguration to the base IP model"; - - uses ipv6-autoconf-top; - } - -} \ No newline at end of file diff --git a/device-operator/internal/model/yang/openconfig-if-ip.yang b/device-operator/internal/model/yang/openconfig-if-ip.yang deleted file mode 100644 index 1796561..0000000 --- a/device-operator/internal/model/yang/openconfig-if-ip.yang +++ /dev/null @@ -1,1002 +0,0 @@ -module openconfig-if-ip { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/ip"; - - prefix "oc-ip"; - - // import some basic types - import ietf-inet-types { prefix inet; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-vlan { prefix oc-vlan; } - import ietf-yang-types { prefix yang; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Model for managing IP interfaces. - - This model reuses most of the IETF YANG model for IP management - described by RFC 7277. The primary differences are in the - structure of configuration and state data."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - - // typedef statements - - typedef ip-address-origin { - type enumeration { - enum OTHER { - description - "None of the following."; - } - enum STATIC { - description - "Indicates that the address has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum DHCP { - description - "Indicates an address that has been assigned to this - system by a DHCP server."; - } - enum LINK_LAYER { - description - "Indicates an address created by IPv6 stateless - autoconfiguration that embeds a link-layer address in its - interface identifier."; - } - enum RANDOM { - description - "[adapted from RFC 7277] - - Indicates an address chosen by the system at - random, e.g., an IPv4 address within 169.254/16, an - RFC 4941 temporary address, or an RFC 7217 semantically - opaque address."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - RFC 7217: A Method for Generating Semantically Opaque - Interface Identifiers with IPv6 Stateless - Address Autoconfiguration (SLAAC)"; - } - } - description - "The origin of an address."; - } - - typedef neighbor-origin { - type enumeration { - enum OTHER { - description - "None of the following."; - } - enum STATIC { - description - "Indicates that the mapping has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum DYNAMIC { - description - "[adapted from RFC 7277] - - Indicates that the mapping has been dynamically resolved - using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery - protocol."; - } - } - description - "The origin of a neighbor entry."; - } - - // grouping statements - - grouping ipv4-global-config { - description "Configuration data for IPv4 interfaces across - all addresses assigned to the interface"; - reference "RFC 7277 - A YANG Data Model for IP Management"; - - leaf enabled { - type boolean; - default true; - description - "Controls whether IPv4 is enabled or disabled on this - interface. When IPv4 is enabled, this interface is - connected to an IPv4 stack, and the interface can send - and receive IPv4 packets."; - } - - leaf mtu { - type uint16 { - range "68..max"; - } - units octets; - description - "The size, in octets, of the largest IPv4 packet that the - interface will send and receive. - - The server may restrict the allowed values for this leaf, - depending on the interface's type. - - If this leaf is not configured, the operationally used MTU - depends on the interface's type."; - reference - "RFC 791: Internet Protocol"; - } - - } - - grouping ipv4-address-config { - - description - "Per IPv4 adresss configuration data for the - interface."; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "[adapted from IETF IP model RFC 7277] - - The IPv4 address on the interface."; - } - - leaf prefix-length { - type uint8 { - range "0..32"; - } - description - "[adapted from IETF IP model RFC 7277] - - The length of the subnet prefix."; - } - } - - grouping ipv4-neighbor-config { - description - "[adapted from IETF IP model RFC 7277] - - Per IPv4 neighbor configuration data. Neighbor - entries are analagous to static ARP entries, i.e., they - create a correspondence between IP and link-layer addresses"; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address of the neighbor node."; - } - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "The link-layer address of the neighbor node."; - } - } - - grouping ipv4-address-state { - description - "State variables for IPv4 addresses on the interface"; - - leaf origin { - type ip-address-origin; - description - "The origin of this address, e.g., statically configured, - assigned by DHCP, etc.."; - } - } - - grouping ipv4-neighbor-state { - description - "State variables for IPv4 neighbor entries on the interface."; - - leaf origin { - type neighbor-origin; - description - "The origin of this neighbor entry, static or dynamic."; - } - } - - grouping ipv6-global-config { - description - "Configuration data at the global level for each - IPv6 interface"; - - leaf enabled { - type boolean; - default true; - description - "[adapted from IETF IP model RFC 7277] - - Controls whether IPv6 is enabled or disabled on this - interface. When IPv6 is enabled, this interface is - connected to an IPv6 stack, and the interface can send - and receive IPv6 packets."; - } - - leaf mtu { - type uint32 { - range "1280..max"; - } - units octets; - description - "[adapted from IETF IP model RFC 7277] - - The size, in octets, of the largest IPv6 packet that the - interface will send and receive. - - The server may restrict the allowed values for this leaf, - depending on the interface's type. - - If this leaf is not configured, the operationally used MTU - depends on the interface's type."; - reference - "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - Section 5"; - } - - leaf dup-addr-detect-transmits { - type uint32; - default 1; - description - "[adapted from IETF IP model RFC 7277] - - The number of consecutive Neighbor Solicitation messages - sent while performing Duplicate Address Detection on a - tentative address. A value of zero indicates that - Duplicate Address Detection is not performed on - tentative addresses. A value of one indicates a single - transmission with no follow-up retransmissions."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - } - } - - grouping ipv6-address-config { - description "Per-address configuration data for IPv6 interfaces"; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "[adapted from IETF IP model RFC 7277] - - The IPv6 address on the interface."; - } - - leaf prefix-length { - type uint8 { - range "0..128"; - } - mandatory true; - description - "[adapted from IETF IP model RFC 7277] - - The length of the subnet prefix."; - } - } - - grouping ipv6-address-state { - description - "Per-address operational state data for IPv6 interfaces"; - - leaf origin { - type ip-address-origin; - description - "[adapted from IETF IP model RFC 7277] - - The origin of this address, e.g., static, dhcp, etc."; - } - - leaf status { - type enumeration { - enum PREFERRED { - description - "This is a valid address that can appear as the - destination or source address of a packet."; - } - enum DEPRECATED { - description - "This is a valid but deprecated address that should - no longer be used as a source address in new - communications, but packets addressed to such an - address are processed as expected."; - } - enum INVALID { - description - "This isn't a valid address, and it shouldn't appear - as the destination or source address of a packet."; - } - enum INACCESSIBLE { - description - "The address is not accessible because the interface - to which this address is assigned is not - operational."; - } - enum UNKNOWN { - description - "The status cannot be determined for some reason."; - } - enum TENTATIVE { - description - "The uniqueness of the address on the link is being - verified. Addresses in this state should not be - used for general communication and should only be - used to determine the uniqueness of the address."; - } - enum DUPLICATE { - description - "The address has been determined to be non-unique on - the link and so must not be used."; - } - enum OPTIMISTIC { - description - "The address is available for use, subject to - restrictions, while its uniqueness on a link is - being verified."; - } - } - description - "[adapted from IETF IP model RFC 7277] - - The status of an address. Most of the states correspond - to states from the IPv6 Stateless Address - Autoconfiguration protocol."; - reference - "RFC 4293: Management Information Base for the - Internet Protocol (IP) - - IpAddressStatusTC - RFC 4862: IPv6 Stateless Address Autoconfiguration"; - } - } - - grouping ipv6-neighbor-config { - description - "Per-neighbor configuration data for IPv6 interfaces"; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "[adapted from IETF IP model RFC 7277] - - The IPv6 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "[adapted from IETF IP model RFC 7277] - - The link-layer address of the neighbor node."; - } - } - - grouping ipv6-neighbor-state { - description "Per-neighbor state variables for IPv6 interfaces"; - - leaf origin { - type neighbor-origin; - description - "[adapted from IETF IP model RFC 7277] - - The origin of this neighbor entry."; - } - leaf is-router { - type empty; - description - "[adapted from IETF IP model RFC 7277] - - Indicates that the neighbor node acts as a router."; - } - leaf neighbor-state { - type enumeration { - enum INCOMPLETE { - description - "Address resolution is in progress, and the link-layer - address of the neighbor has not yet been - determined."; - } - enum REACHABLE { - description - "Roughly speaking, the neighbor is known to have been - reachable recently (within tens of seconds ago)."; - } - enum STALE { - description - "The neighbor is no longer known to be reachable, but - until traffic is sent to the neighbor no attempt - should be made to verify its reachability."; - } - enum DELAY { - description - "The neighbor is no longer known to be reachable, and - traffic has recently been sent to the neighbor. - Rather than probe the neighbor immediately, however, - delay sending probes for a short while in order to - give upper-layer protocols a chance to provide - reachability confirmation."; - } - enum PROBE { - description - "The neighbor is no longer known to be reachable, and - unicast Neighbor Solicitation probes are being sent - to verify reachability."; - } - } - description - "[adapted from IETF IP model RFC 7277] - - The Neighbor Unreachability Detection state of this - entry."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3.2"; - } - } - - grouping ip-vrrp-ipv6-config { - description - "IPv6-specific configuration data for VRRP on IPv6 - interfaces"; - - leaf virtual-link-local { - type inet:ip-address; - description - "For VRRP on IPv6 interfaces, sets the virtual link local - address"; - } - } - - grouping ip-vrrp-ipv6-state { - description - "IPv6-specific operational state for VRRP on IPv6 interfaces"; - - uses ip-vrrp-ipv6-config; - } - - grouping ip-vrrp-tracking-config { - description - "Configuration data for tracking interfaces - in a VRRP group"; - - leaf track-interface { - type leafref { - path "/oc-if:interfaces/oc-if:interface/oc-if:name"; - } - // TODO: we may need to add some restriction to ethernet - // or IP interfaces. - description "Sets an interface that should be - tracked for up/down events to dynamically change the - priority state of the VRRP group, and potentially - change the mastership if the tracked interface going - down lowers the priority sufficiently"; - } - - leaf priority-decrement { - type uint8 { - range 0..254; - } - default 0; - description "Set the value to subtract from priority when - the tracked interface goes down"; - } - } - - grouping ip-vrrp-tracking-state { - description - "Operational state data for tracking interfaces in a VRRP - group"; - } - - grouping ip-vrrp-tracking-top { - description - "Top-level grouping for VRRP interface tracking"; - - container interface-tracking { - description - "Top-level container for VRRP interface tracking"; - - container config { - description - "Configuration data for VRRP interface tracking"; - - uses ip-vrrp-tracking-config; - } - - container state { - - config false; - - description - "Operational state data for VRRP interface tracking"; - - uses ip-vrrp-tracking-config; - uses ip-vrrp-tracking-state; - } - } - } - - grouping ip-vrrp-config { - description - "Configuration data for VRRP on IP interfaces"; - - leaf virtual-router-id { - type uint8 { - range 1..255; - } - description - "Set the virtual router id for use by the VRRP group. This - usually also determines the virtual MAC address that is - generated for the VRRP group"; - } - - leaf-list virtual-address { - type inet:ip-address; - description "Configure one or more virtual addresses for the - VRRP group"; - } - - leaf priority { - type uint8 { - range 1..254; - } - default 100; - description "Specifies the sending VRRP interface's priority - for the virtual router. Higher values equal higher - priority"; - } - - leaf preempt { - type boolean; - default true; - description "When set to true, enables preemption by a higher - priority backup router of a lower priority master router"; - } - - leaf preempt-delay { - type uint16 { - range 0..3600; - } - default 0; - description "Set the delay the higher priority router waits - before preempting"; - } - - leaf accept-mode { - type boolean; - // TODO: should we adopt the RFC default given the common - // operational practice of setting to true? - default false; - description "Configure whether packets destined for - virtual addresses are accepted even when the virtual - address is not owned by the router interface"; - } - - leaf advertisement-interval { - type uint16 { - range 1..4095; - } - // TODO this range is theoretical -- needs to be validated - // against major implementations. - units "centiseconds"; - default 100; - description "Sets the interval between successive VRRP - advertisements -- RFC 5798 defines this as a 12-bit - value expressed as 0.1 seconds, with default 100, i.e., - 1 second. Several implementation express this in units of - seconds"; - } - } - - grouping ip-vrrp-state { - description - "Operational state data for VRRP on IP interfaces"; - - leaf current-priority { - type uint8; - description "Operational value of the priority for the - interface in the VRRP group"; - } - } - - grouping ip-vrrp-top { - description - "Top-level grouping for Virtual Router Redundancy Protocol"; - - container vrrp { - description - "Enclosing container for VRRP groups handled by this - IP interface"; - - reference "RFC 5798 - Virtual Router Redundancy Protocol - (VRRP) Version 3 for IPv4 and IPv6"; - - list vrrp-group { - key "virtual-router-id"; - description - "List of VRRP groups, keyed by virtual router id"; - - leaf virtual-router-id { - type leafref { - path "../config/virtual-router-id"; - } - description - "References the configured virtual router id for this - VRRP group"; - } - - container config { - description - "Configuration data for the VRRP group"; - - uses ip-vrrp-config; - } - - container state { - - config false; - - description - "Operational state data for the VRRP group"; - - uses ip-vrrp-config; - uses ip-vrrp-state; - } - - uses ip-vrrp-tracking-top; - } - } - } - - grouping ipv4-top { - description "Top-level configuration and state for IPv4 - interfaces"; - - container ipv4 { - description - "Parameters for the IPv4 address family."; - - container addresses { - description - "Enclosing container for address list"; - - list address { - key "ip"; - description - "The list of configured IPv4 addresses on the interface."; - - leaf ip { - type leafref { - path "../oc-ip:config/oc-ip:ip"; - } - description "References the configured IP address"; - } - - container config { - description "Configuration data for each configured IPv4 - address on the interface"; - - uses ipv4-address-config; - - } - - container state { - - config false; - description "Operational state data for each IPv4 address - configured on the interface"; - - uses ipv4-address-config; - uses ipv4-address-state; - } - - } - } - - container neighbors { - description - "Enclosing container for neighbor list"; - - list neighbor { - key "ip"; - description - "A list of mappings from IPv4 addresses to - link-layer addresses. - - Entries in this list are used as static entries in the - ARP Cache."; - reference - "RFC 826: An Ethernet Address Resolution Protocol"; - - leaf ip { - type leafref { - path "../oc-ip:config/oc-ip:ip"; - } - description "References the configured IP address"; - } - - container config { - description "Configuration data for each configured IPv4 - address on the interface"; - - uses ipv4-neighbor-config; - - } - - container state { - - config false; - description "Operational state data for each IPv4 address - configured on the interface"; - - uses ipv4-neighbor-config; - uses ipv4-neighbor-state; - } - } - } - - uses oc-if:sub-unnumbered-top; - - container config { - description - "Top-level IPv4 configuration data for the interface"; - - uses ipv4-global-config; - } - - container state { - - config false; - description - "Top level IPv4 operational state data"; - - uses ipv4-global-config; - } - } - } - - grouping ipv6-top { - description - "Top-level configuration and state for IPv6 interfaces"; - - container ipv6 { - description - "Parameters for the IPv6 address family."; - - container addresses { - description - "Enclosing container for address list"; - - list address { - key "ip"; - description - "The list of configured IPv6 addresses on the interface."; - - leaf ip { - type leafref { - path "../oc-ip:config/oc-ip:ip"; - } - description "References the configured IP address"; - } - - container config { - description - "Configuration data for each IPv6 address on - the interface"; - - uses ipv6-address-config; - - } - - container state { - - config false; - description - "State data for each IPv6 address on the - interface"; - - uses ipv6-address-config; - uses ipv6-address-state; - } - } - } - - container neighbors { - description - "Enclosing container for list of IPv6 neighbors"; - - list neighbor { - key "ip"; - description - "List of IPv6 neighbors"; - - leaf ip { - type leafref { - path "../oc-ip:config/oc-ip:ip"; - } - description - "References the configured IP neighbor address"; - } - - container config { - description "Configuration data for each IPv6 address on - the interface"; - - uses ipv6-neighbor-config; - - } - - container state { - - config false; - description "State data for each IPv6 address on the - interface"; - - uses ipv6-neighbor-config; - uses ipv6-neighbor-state; - } - } - } - uses oc-if:sub-unnumbered-top; - - container config { - description "Top-level config data for the IPv6 interface"; - - uses ipv6-global-config; - } - - container state { - config false; - description - "Top-level operational state data for the IPv6 interface"; - - uses ipv6-global-config; - - } - } - } - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface" { - description - "IPv4 addr family configuration for - interfaces"; - - uses ipv4-top; - - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface" { - description - "IPv6 addr family configuration for - interfaces"; - - uses ipv6-top; - - } - - // VRRP for IPv4 interfaces - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { - - description - "Additional IP addr family configuration for - interfaces"; - - uses ip-vrrp-top; - - } - - // VRRP for IPv6 interfaces - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { - description - "Additional IP addr family configuration for - interfaces"; - - uses ip-vrrp-top; - - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/" + - "vrrp/vrrp-group/config" { - description - "Additional VRRP data for IPv6 interfaces"; - - uses ip-vrrp-ipv6-config; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/" + - "vrrp-group/state" { - description - "Additional VRRP data for IPv6 interfaces"; - - uses ip-vrrp-ipv6-state; - } - - // Augments for for routed VLANs - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { - description - "IPv4 addr family configuration for - interfaces"; - - uses ipv4-top; - - } - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { - description - "IPv6 addr family configuration for - interfaces"; - - uses ipv6-top; - - } - - // VRRP for routed VLAN interfaces - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + - "oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { - description - "Additional IP addr family configuration for - interfaces"; - - uses ip-vrrp-top; - - } - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + - "oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { - description - "Additional IP addr family configuration for - interfaces"; - - uses ip-vrrp-top; - - } - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + - "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/config" { - description - "Additional VRRP data for IPv6 interfaces"; - - uses ip-vrrp-ipv6-config; - } - - - augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + - "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/state" { - description - "Additional VRRP data for IPv6 interfaces"; - - uses ip-vrrp-ipv6-state; - } - - // rpc statements - - // notification statements -} diff --git a/device-operator/internal/model/yang/openconfig-interfaces.yang b/device-operator/internal/model/yang/openconfig-interfaces.yang deleted file mode 100644 index e5b4782..0000000 --- a/device-operator/internal/model/yang/openconfig-interfaces.yang +++ /dev/null @@ -1,933 +0,0 @@ -module openconfig-interfaces { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces"; - - prefix "oc-if"; - - // import some basic types - import ietf-interfaces { prefix ietf-if; } - import ietf-yang-types { prefix yang; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Model for managing network interfaces and subinterfaces. This - module also defines convenience types / groupings for other - models to create references to interfaces: - - base-interface-ref (type) - reference to a base interface - interface-ref (grouping) - container for reference to a - interface + subinterface - interface-ref-state (grouping) - container for read-only - (opstate) reference to interface + subinterface - - This model reuses data items defined in the IETF YANG model for - interfaces described by RFC 7223 with an alternate structure - (particularly for operational state data) and and with - additional configuration items."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - - // typedef statements - - typedef base-interface-ref { - type leafref { - path "/oc-if:interfaces/oc-if:interface/oc-if:name"; - } - description - "Reusable type for by-name reference to a base interface. - This type may be used in cases where ability to reference - a subinterface is not required."; - } - - typedef interface-id { - type string; - description - "User-defined identifier for an interface, generally used to - name a interface reference. The id can be arbitrary but a - useful convention is to use a combination of base interface - name and subinterface index."; - } - - // grouping statements - - grouping interface-ref-common { - description - "Reference leafrefs to interface / subinterface"; - - leaf interface { - type leafref { - path "/oc-if:interfaces/oc-if:interface/oc-if:name"; - } - description - "Reference to a base interface. If a reference to a - subinterface is required, this leaf must be specified - to indicate the base interface."; - } - - leaf subinterface { - type leafref { - path "/oc-if:interfaces/" + - "oc-if:interface[oc-if:name=current()/../interface]/" + - "oc-if:subinterfaces/oc-if:subinterface/oc-if:index"; - } - description - "Reference to a subinterface -- this requires the base - interface to be specified using the interface leaf in - this container. If only a reference to a base interface - is requuired, this leaf should not be set."; - } - } - - grouping interface-ref-state-container { - description - "Reusable opstate w/container for a reference to an - interface or subinterface"; - - container state { - config false; - description - "Operational state for interface-ref"; - - uses interface-ref-common; - } - } - - grouping interface-ref { - description - "Reusable definition for a reference to an interface or - subinterface"; - - container interface-ref { - description - "Reference to an interface or subinterface"; - - container config { - description - "Configured reference to interface / subinterface"; - - uses interface-ref-common; - } - - uses interface-ref-state-container; - } - } - - grouping interface-ref-state { - description - "Reusable opstate w/container for a reference to an - interface or subinterface"; - - container interface-ref { - description - "Reference to an interface or subinterface"; - - uses interface-ref-state-container; - } - } - - - grouping interface-common-config { - description - "Configuration data data nodes common to physical interfaces - and subinterfaces"; - - leaf name { - type string; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The name of the interface. - - A device MAY restrict the allowed values for this leaf, - possibly depending on the type of the interface. - For system-controlled interfaces, this leaf is the - device-specific name of the interface. The 'config false' - list interfaces/interface[name]/state contains the currently - existing interfaces on the device. - - If a client tries to create configuration for a - system-controlled interface that is not present in the - corresponding state list, the server MAY reject - the request if the implementation does not support - pre-provisioning of interfaces or if the name refers to - an interface that can never exist in the system. A - NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case. - - The IETF model in RFC 7223 provides YANG features for the - following (i.e., pre-provisioning and arbitrary-names), - however they are omitted here: - - If the device supports pre-provisioning of interface - configuration, the 'pre-provisioning' feature is - advertised. - - If the device allows arbitrarily named user-controlled - interfaces, the 'arbitrary-names' feature is advertised. - - When a configured user-controlled interface is created by - the system, it is instantiated with the same name in the - /interfaces/interface[name]/state list."; - reference - "RFC 7223: A YANG Data Model for Interface Management"; - } - - leaf description { - type string; - description - "[adapted from IETF interfaces model (RFC 7223)] - - A textual description of the interface. - - A server implementation MAY map this leaf to the ifAlias - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifAlias. The definition of - such a mechanism is outside the scope of this document. - - Since ifAlias is defined to be stored in non-volatile - storage, the MIB implementation MUST map ifAlias to the - value of 'description' in the persistently stored - datastore. - - Specifically, if the device supports ':startup', when - ifAlias is read the device MUST return the value of - 'description' in the 'startup' datastore, and when it is - written, it MUST be written to the 'running' and 'startup' - datastores. Note that it is up to the implementation to - - decide whether to modify this single leaf in 'startup' or - perform an implicit copy-config from 'running' to - 'startup'. - - If the device does not support ':startup', ifAlias MUST - be mapped to the 'description' leaf in the 'running' - datastore."; - reference - "RFC 2863: The Interfaces Group MIB - ifAlias"; - } - - leaf enabled { - type boolean; - default "true"; - description - "[adapted from IETF interfaces model (RFC 7223)] - - This leaf contains the configured, desired state of the - interface. - - Systems that implement the IF-MIB use the value of this - leaf in the 'running' datastore to set - IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry - has been initialized, as described in RFC 2863. - - Changes in this leaf in the 'running' datastore are - reflected in ifAdminStatus, but if ifAdminStatus is - changed over SNMP, this leaf is not affected."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - } - - grouping interface-phys-config { - description - "Configuration data for physical interfaces"; - - leaf type { - type identityref { - base ietf-if:interface-type; - } - mandatory true; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The type of the interface. - - When an interface entry is created, a server MAY - initialize the type leaf with a valid value, e.g., if it - is possible to derive the type from the name of the - interface. - - If a client tries to set the type of an interface to a - value that can never be used by the system, e.g., if the - type is not supported or if the type does not match the - name of the interface, the server MUST reject the request. - A NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf mtu { - type uint16; - description - "Set the max transmission unit size in octets - for the physical interface. If this is not set, the mtu is - set to the operational default -- e.g., 1514 bytes on an - Ethernet interface."; - } - - uses interface-common-config; - } - - grouping interface-phys-holdtime-config { - description - "Configuration data for interface hold-time settings -- - applies to physical interfaces."; - - leaf up { - type uint32; - units milliseconds; - default 0; - description - "Dampens advertisement when the interface - transitions from down to up. A zero value means dampening - is turned off, i.e., immediate notification."; - } - - leaf down { - type uint32; - units milliseconds; - default 0; - description - "Dampens advertisement when the interface transitions from - up to down. A zero value means dampening is turned off, - i.e., immediate notification."; - } - } - - grouping interface-phys-holdtime-state { - description - "Operational state data for interface hold-time."; - } - - grouping interface-phys-holdtime-top { - description - "Top-level grouping for setting link transition - dampening on physical and other types of interfaces."; - - container hold-time { - description - "Top-level container for hold-time settings to enable - dampening advertisements of interface transitions."; - - container config { - description - "Configuration data for interface hold-time settings."; - - uses interface-phys-holdtime-config; - } - - container state { - - config false; - - description - "Operational state data for interface hold-time."; - - uses interface-phys-holdtime-config; - uses interface-phys-holdtime-state; - } - } - } - - grouping interface-common-state { - description - "Operational state data (in addition to intended configuration) - at the global level for this interface"; - - leaf ifindex { - type uint32; - description - "System assigned number for each interface. Corresponds to - ifIndex object in SNMP Interface MIB"; - reference - "RFC 2863 - The Interfaces Group MIB"; - } - - leaf admin-status { - type enumeration { - enum UP { - description - "Ready to pass packets."; - } - enum DOWN { - description - "Not ready to pass packets and not in some test mode."; - } - enum TESTING { - //TODO: This is generally not supported as a configured - //admin state, though it's in the standard interfaces MIB. - //Consider removing it. - description - "In some test mode."; - } - } - //TODO:consider converting to an identity to have the - //flexibility to remove some values defined by RFC 7223 that - //are not used or not implemented consistently. - mandatory true; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The desired state of the interface. In RFC 7223 this leaf - has the same read semantics as ifAdminStatus. Here, it - reflects the administrative state as set by enabling or - disabling the interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum UP { - value 1; - description - "Ready to pass packets."; - } - enum DOWN { - value 2; - description - "The interface does not pass any packets."; - } - enum TESTING { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum UNKNOWN { - value 4; - description - "Status cannot be determined for some reason."; - } - enum DORMANT { - value 5; - description - "Waiting for some external event."; - } - enum NOT_PRESENT { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum LOWER_LAYER_DOWN { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - //TODO:consider converting to an identity to have the - //flexibility to remove some values defined by RFC 7223 that - //are not used or not implemented consistently. - mandatory true; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The current operational state of the interface. - - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:timeticks; - description - "Date and time of the last state change of the interface - (e.g., up-to-down transition). This corresponds to the - ifLastChange object in the standard interface MIB."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - } - - - grouping interface-counters-state { - description - "Operational state representing interface counters - and statistics. Some of these are adapted from RFC 7223"; - - //TODO: we may need to break this list of counters into those - //that would appear for physical vs. subinterface or logical - //interfaces. For now, just replicating the full stats - //grouping to both interface and subinterface. - - container counters { - description - "A collection of interface-related statistics objects."; - - reference - "RFC 7223 - A YANG Data Model for Interface - Management"; - - leaf in-octets { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - - leaf in-broadcast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - - The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - - - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - - leaf out-octets { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - - The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - - - leaf out-multicast-pkts { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter64; - description - "[adapted from IETF interfaces model (RFC 7223)] - Changed the counter type to counter64. - - For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - - leaf last-clear { - type yang:date-and-time; - description - "Indicates the last time the interface counters were - cleared."; - } - } - } - - // data definition statements - - grouping sub-unnumbered-config { - description - "Configuration data for unnumbered subinterfaces"; - - leaf enabled { - type boolean; - default false; - description - "Indicates that the subinterface is unnumbered. By default - the subinterface is numbered, i.e., expected to have an - IP address configuration."; - } - } - - grouping sub-unnumbered-state { - description - "Operational state data unnumbered subinterfaces"; - } - - grouping sub-unnumbered-top { - description - "Top-level grouping unnumbered subinterfaces"; - - container unnumbered { - description - "Top-level container for setting unnumbered interfaces. - Includes reference the interface that provides the - address information"; - - container config { - description - "Configuration data for unnumbered interface"; - - uses sub-unnumbered-config; - } - - container state { - - config false; - - description - "Operational state data for unnumbered interfaces"; - - uses sub-unnumbered-config; - uses sub-unnumbered-state; - } - - uses oc-if:interface-ref; - } - } - - grouping subinterfaces-config { - description - "Configuration data for subinterfaces"; - - leaf index { - type uint32; - default 0; - description - "The index of the subinterface, or logical interface number. - On systems with no support for subinterfaces, or not using - subinterfaces, this value should default to 0, i.e., the - default subinterface."; - } - - uses interface-common-config; - - } - - grouping subinterfaces-state { - description - "Operational state data for subinterfaces"; - - uses interface-common-state; - uses interface-counters-state; - } - - grouping subinterfaces-top { - description - "Subinterface data for logical interfaces associated with a - given interface"; - - container subinterfaces { - description - "Enclosing container for the list of subinterfaces associated - with a physical interface"; - - list subinterface { - key "index"; - - description - "The list of subinterfaces (logical interfaces) associated - with a physical interface"; - - leaf index { - type leafref { - path "../config/index"; - } - description - "The index number of the subinterface -- used to address - the logical interface"; - } - - container config { - description - "Configurable items at the subinterface level"; - - uses subinterfaces-config; - } - - container state { - - config false; - description - "Operational state data for logical interfaces"; - - uses subinterfaces-config; - uses subinterfaces-state; - } - } - } - } - - grouping interfaces-top { - description - "Top-level grouping for interface configuration and - operational state data"; - - container interfaces { - description - "Top level container for interfaces, including configuration - and state data."; - - - list interface { - key "name"; - - description - "The list of named interfaces on the device."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "References the configured name of the interface"; - //TODO: need to consider whether this should actually - //reference the name in the state subtree, which - //presumably would be the system-assigned name, or the - //configured name. Points to the config/name now - //because of YANG 1.0 limitation that the list - //key must have the same "config" as the list, and - //also can't point to a non-config node. - } - - container config { - description - "Configurable items at the global, physical interface - level"; - - uses interface-phys-config; - } - - container state { - - config false; - description - "Operational state data at the global interface level"; - - uses interface-phys-config; - uses interface-common-state; - uses interface-counters-state; - } - - uses interface-phys-holdtime-top; - uses subinterfaces-top; - } - } - } - - uses interfaces-top; - - -} diff --git a/device-operator/internal/model/yang/openconfig-vlan-types.yang b/device-operator/internal/model/yang/openconfig-vlan-types.yang deleted file mode 100644 index dd095ce..0000000 --- a/device-operator/internal/model/yang/openconfig-vlan-types.yang +++ /dev/null @@ -1,180 +0,0 @@ -module openconfig-vlan-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/vlan-types"; - - prefix "oc-vlan-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module defines configuration and state variables for VLANs, - in addition to VLAN parameters associated with interfaces"; - - oc-ext:openconfig-version "1.0.2"; - - revision "2016-05-26" { - description - "OpenConfig public release"; - reference "1.0.2"; - } - - // extension statements - - // feature statements - - // identity statements - - identity TPID_TYPES { - description - "Base identity for TPID values that can override the VLAN - ethertype value"; - } - - identity TPID_0x8100 { - base TPID_TYPES; - description - "Default TPID value for 802.1q single-tagged VLANs."; - } - - identity TPID_0x8A88 { - base TPID_TYPES; - description - "TPID value for 802.1ad provider bridging, Q-in-Q, - or stacked VLANs"; - } - - identity TPID_0x9100 { - base TPID_TYPES; - description - "Alternate TPID value"; - } - - identity TPID_0X9200 { - base TPID_TYPES; - description - "Alternate TPID value"; - } - - // typedef statements - - // TODO: typedefs should be defined in a vlan-types.yang file. - typedef vlan-id { - type uint16 { - range 1..4094; - } - description - "Type definition representing a single-tagged VLAN"; - } - - typedef vlan-range { - type string { - // range specified as [lower]..[upper] - pattern "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|" + - "40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|" + - "[1-9])"; - } - description - "Type definition representing a range of single-tagged - VLANs. A range is specified as x..y where x and y are - valid VLAN IDs (1 <= vlan-id <= 4094). The range is - assumed to be inclusive, such that any VLAN-ID matching - x <= VLAN-ID <= y falls within the range."; - } - - typedef qinq-id { - type string { - pattern - "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])\." + - "((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])|\*)"; - } - description - "Type definition representing a single double-tagged/QinQ VLAN - identifier. The format of a QinQ VLAN-ID is x.y where X is the - 'outer' VLAN identifier, and y is the 'inner' VLAN identifier. - Both x and y must be valid VLAN IDs (1 <= vlan-id <= 4094) - with the exception that y may be equal to a wildcard (*). In - cases where y is set to the wildcard, this represents all inner - VLAN identifiers where the outer VLAN identifier is equal to - x"; - } - - typedef qinq-id-range { - type union { - type string { - // match cases where the range is specified as x..y.z - pattern - "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])\.\." + - "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])\." + - "((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])|\*)"; - } - type string { - // match cases where the range is specified as x.y..z - pattern - "(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9]))\." + - "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])\.\." + - "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + - "[1-9][0-9]{1,2}|[1-9])"; - } - } - description - "A type definition representing a range of double-tagged/QinQ - VLAN identifiers. The format of a QinQ VLAN-ID range can be - specified in three formats. Where the range is outer VLAN IDs - the range is specified as x..y.z. In this case outer VLAN - identifiers meeting the criteria x <= outer-vlan-id <= y are - accepted iff the inner VLAN-ID is equal to y - or any inner-tag - if the wildcard is specified. Alternatively the range can be - specified as x.y..z. In this case only VLANs with an - outer-vlan-id qual to x are accepted (x may again be the - wildcard). Inner VLANs are accepted if they meet the inequality - y <= inner-vlan-id <= z."; - } - - typedef vlan-mode-type { - type enumeration { - enum ACCESS { - description "Access mode VLAN interface (No 802.1q header)"; - } - enum TRUNK { - description "Trunk mode VLAN interface"; - } - } - description - "VLAN interface mode (trunk or access)"; - } - - typedef vlan-ref { - type union { - type vlan-id; - type string; - // TODO: string should be changed to leafref to reference - // an existing VLAN. this is not allowed in YANG 1.0 but - // is expected to be in YANG 1.1. - // type leafref { - // path "vlan:vlans/vlan:vlan/vlan:config/vlan:name"; - // } - } - description - "Reference to a VLAN by name or id"; - } - -} diff --git a/device-operator/internal/model/yang/openconfig-vlan.yang b/device-operator/internal/model/yang/openconfig-vlan.yang deleted file mode 100644 index afc61fd..0000000 --- a/device-operator/internal/model/yang/openconfig-vlan.yang +++ /dev/null @@ -1,407 +0,0 @@ -module openconfig-vlan { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/vlan"; - - prefix "oc-vlan"; - - // import some basic types - import openconfig-vlan-types { prefix oc-vlan-types; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ethernet { prefix oc-eth; } - import openconfig-if-aggregate { prefix oc-lag; } - import iana-if-type { prefix ift; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module defines configuration and state variables for VLANs, - in addition to VLAN parameters associated with interfaces"; - - oc-ext:openconfig-version "1.0.2"; - - revision "2016-05-26" { - description - "OpenConfig public release"; - reference "1.0.2"; - } - - - - // grouping statements - - grouping vlan-config { - description "VLAN configuration container."; - - leaf vlan-id { - type oc-vlan-types:vlan-id; - description "Interface VLAN id."; - } - - leaf name { - type string; - description "Interface VLAN name."; - } - - leaf status { - type enumeration { - enum ACTIVE { - description "VLAN is active"; - } - enum SUSPENDED { - description "VLAN is inactive / suspended"; - } - } - default ACTIVE; - description "Admin state of the VLAN"; - } - - leaf tpid { - type identityref { - base oc-vlan-types:TPID_TYPES; - } - default oc-vlan-types:TPID_0x8100; - description - "Optionally set the tag protocol identifier field (TPID) that - is accepted on the VLAN"; - } - - } - - grouping vlan-state { - description "State variables for VLANs"; - - } - - grouping vlan-members-state { - description - "List of interfaces / subinterfaces belonging to the VLAN."; - - container members { - description - "Enclosing container for list of member interfaces"; - - list member { - config false; - description - "List of references to interfaces / subinterfaces - associated with the VLAN."; - - uses oc-if:interface-ref-state; - } - } - } - - grouping vlan-ethernet-config { - description - "VLAN related configuration that is part of the physical - Ethernet interface."; - - leaf interface-mode { - type oc-vlan-types:vlan-mode-type; - description - "Set the interface to access or trunk mode for - VLANs"; - } - - leaf native-vlan { - when "interface-mode = 'TRUNK'" { - description - "Native VLAN is valid for trunk mode interfaces"; - } - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:qinq-id; - } - description - "Set the native VLAN id for untagged frames arriving on - a trunk interface. This configuration is only valid on - a trunk interface."; - } - - leaf access-vlan { - when "interface-mode = 'ACCESS'" { - description - "Access VLAN assigned to the interfaces"; - } - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:qinq-id; - } - description - "Assign the access vlan to the access port."; - } - - leaf-list trunk-vlans { - when "interface-mode = 'TRUNK'" { - description - "Allowed VLANs may be specified for trunk mode - interfaces."; - } - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:vlan-range; - type oc-vlan-types:qinq-id; - type oc-vlan-types:qinq-id-range; - } - description - "Specify VLANs, or ranges thereof, that the interface may - carry when in trunk mode. If not specified, all VLANs are - allowed on the interface. Ranges are specified in the form - x..y, where x ../ - -require ( - github.com/cenkalti/backoff/v4 v4.1.1 // indirect - github.com/cockroachdb/apd/v2 v2.0.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/proto v1.6.15 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.2 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-playground/locales v0.14.1 // indirect - github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.5.9 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect - github.com/leodido/go-urn v1.2.4 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect - github.com/openconfig/grpctunnel v0.0.0-20220524190229-125331eabdde // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a // indirect - github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.4.2 // indirect - go.uber.org/atomic v1.9.0 // indirect - go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/protobuf v1.30.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apimachinery v0.25.4 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect -) diff --git a/device-subscriber/go.sum b/device-subscriber/go.sum deleted file mode 100644 index fe22e36..0000000 --- a/device-subscriber/go.sum +++ /dev/null @@ -1,644 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -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= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -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/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -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= -cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo= -cuelang.org/go v0.4.3/go.mod h1:7805vR9H+VoBNdWFdI7jyDR3QLUPp4+naHfbcgp55HI= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= -github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -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= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= -github.com/cockroachdb/apd/v2 v2.0.1 h1:y1Rh3tEU89D+7Tgbw+lp52T6p/GJLpDmNvr10UWqLTE= -github.com/cockroachdb/apd/v2 v2.0.1/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/proto v1.6.15 h1:XbpwxmuOPrdES97FrSfpyy67SSCV/wBIKXqgJzh6hNw= -github.com/emicklei/proto v1.6.15/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= -github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24= -github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/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= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -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/protobuf v3.11.4+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -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/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -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 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/openconfig/gnmi v0.0.0-20200414194230-1597cc0f2600/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= -github.com/openconfig/gnmi v0.0.0-20200508230933-d19cebf5e7be/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= -github.com/openconfig/gnmi v0.0.0-20220617175856-41246b1b3507 h1:tv9HygDMXnoGyWuLmNCodMV2+PK6+uT/ndAxDVzsUUQ= -github.com/openconfig/gnmi v0.0.0-20220617175856-41246b1b3507/go.mod h1:ycJVRtLs20E2c1WD+9oacgxbrBFwQygd8/uaOuGMlfc= -github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= -github.com/openconfig/goyang v0.2.2/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/goyang v1.0.0 h1:nYaFu7BOAk/eQn4CgAUjgYPfp3J6CdXrBryp32E5CjI= -github.com/openconfig/goyang v1.0.0/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= -github.com/openconfig/gribi v0.1.1-0.20210423184541-ce37eb4ba92f/go.mod h1:OoH46A2kV42cIXGyviYmAlGmn6cHjGduyC2+I9d/iVs= -github.com/openconfig/grpctunnel v0.0.0-20220524190229-125331eabdde h1:tSMKTQlWcHhdxQhn6P9myhLcoI+SzxF9e6hHWstCagU= -github.com/openconfig/grpctunnel v0.0.0-20220524190229-125331eabdde/go.mod h1:OmTWe7RyZj2CIzIgy4ovEBzCLBJzRvWSZmn7u02U9gU= -github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= -github.com/openconfig/ygot v0.10.4/go.mod h1:oCQNdXnv7dWc8scTDgoFkauv1wwplJn5HspHcjlxSAQ= -github.com/openconfig/ygot v0.22.1 h1:jOpaEuOE1JaLDkDbDTza45YOxhn8ghroK7xxXHt4v0I= -github.com/openconfig/ygot v0.22.1/go.mod h1:7ZiBFNc4n/1Hkv2v2dAEpxisqDznp0JVpLR13Toe4AY= -github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a h1:AKJY61V2SQtJ2a2PdeswKk0NM1qF77X+julRNYRxPOk= -github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= -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/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -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.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -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= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -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/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= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -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= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/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= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/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-20210615035016-665e8c7367d1/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-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -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= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/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= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/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.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -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= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200519141106-08726f379972/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -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-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210811021853-ddbe55d93216/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -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/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -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= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -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.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/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= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.25.0 h1:H+Q4ma2U/ww0iGB78ijZx6DRByPz6/733jIuFpX70e0= -k8s.io/apimachinery v0.25.4 h1:CtXsuaitMESSu339tfhVXhQrPET+EiWnIY1rcurKnAc= -k8s.io/apimachinery v0.25.4/go.mod h1:jaF9C/iPNM1FuLl7Zuy5b9v+n35HGSh6AQ4HYRkCqwo= -k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 h1:GfD9OzL11kvZN5iArC6oTS7RTj7oJOIfnislxYlqTj8= -k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -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/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -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.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/device-subscriber/internal/cmd/cmd.go b/device-subscriber/internal/cmd/cmd.go deleted file mode 100644 index 586001c..0000000 --- a/device-subscriber/internal/cmd/cmd.go +++ /dev/null @@ -1,126 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package cmd - -import ( - "fmt" - "strings" - - "github.com/nttcom/kuesta/device-subscriber/internal/logger" - "github.com/nttcom/kuesta/device-subscriber/internal/validator" - "github.com/nttcom/kuesta/pkg/credentials" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -type Config struct { - Devel bool - Verbose uint8 - Addr string `validate:"required"` - Username string - Password string - Device string `validate:"required"` - AggregatorURL string `mapstructure:"aggregator-url" validate:"required"` - NoTLS bool `mapstructure:"notls"` - TLSSkipVerify bool `mapstructure:"skip-verify"` - TLSKeyPath string `mapstructure:"tls-key"` - TLSCrtPath string `mapstructure:"tls-crt"` - TLSCACrtPath string `mapstructure:"tls-ca"` - TLSDeviceCACrtPath string `mapstructure:"tls-device-ca"` -} - -func (c *Config) TLSClientConfig() *credentials.TLSClientConfig { - return &credentials.TLSClientConfig{ - TLSConfigBase: credentials.TLSConfigBase{ - NoTLS: c.NoTLS, - CrtPath: c.TLSCrtPath, - KeyPath: c.TLSKeyPath, - CACrtPath: c.TLSCACrtPath, - }, - SkipVerifyServer: c.TLSSkipVerify, - } -} - -func (c *Config) DeviceTLSClientConfig() *credentials.TLSClientConfig { - return &credentials.TLSClientConfig{ - TLSConfigBase: credentials.TLSConfigBase{ - NoTLS: c.NoTLS, - CrtPath: c.TLSCrtPath, - KeyPath: c.TLSKeyPath, - CACrtPath: c.TLSDeviceCACrtPath, - }, - SkipVerifyServer: c.TLSSkipVerify, - } -} - -// Validate validates exposed fields according to the `validate` tag. -func (c *Config) Validate() error { - if c.TLSSkipVerify && c.TLSCACrtPath != "" { - return fmt.Errorf("skip-verify and tls-ca-crt flags are mutually exclusive") - } - return validator.Validate(c) -} - -// Mask returns the copy whose sensitive data are masked. -func (c *Config) Mask() *Config { - cc := *c - cc.Password = "***" - return &cc -} - -func NewRootCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "kuesta-subscribe", - Short: "kuesta-subscribe subscribes Network Element Configuration Update.", - SilenceUsage: true, - RunE: func(cmd *cobra.Command, args []string) error { - var cfg Config - if err := viper.Unmarshal(&cfg); err != nil { - return err - } - if err := cfg.Validate(); err != nil { - return err - } - logger.Setup(cfg.Devel, cfg.Verbose) - return Run(cfg) - }, - } - - cmd.Flags().BoolP("devel", "", false, "enable development mode") - cmd.Flags().Uint8P("verbose", "v", 0, "verbose level") - cmd.Flags().StringP("addr", "a", "", "Address of the target device, address:port or just :port") - cmd.Flags().StringP("username", "u", "admin", "Username of the target device") - cmd.Flags().StringP("password", "p", "admin", "Password of the target device") - cmd.Flags().StringP("device", "d", "", "Name of the target device") - cmd.Flags().StringP("aggregator-url", "", "", "URL of the aggregator") - cmd.Flags().BoolP("notls", "", false, "Run server without TLS.") - cmd.Flags().BoolP("skip-verify", "", false, "Skip TLS verification and allow insecure transport.") - cmd.Flags().StringP("tls-ca-crt", "", "", "Path to the TLS server certificate file.") - - cobra.CheckErr(viper.BindPFlags(cmd.Flags())) - viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) - viper.SetEnvPrefix("KUESTA") - viper.AutomaticEnv() - - return cmd -} diff --git a/device-subscriber/internal/cmd/cmd_test.go b/device-subscriber/internal/cmd/cmd_test.go deleted file mode 100644 index 20538e2..0000000 --- a/device-subscriber/internal/cmd/cmd_test.go +++ /dev/null @@ -1,123 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package cmd - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestConfig_Validate(t *testing.T) { - newValidStruct := func(t func(*Config)) *Config { - cfg := &Config{ - Device: "device1", - Addr: ":9339", - AggregatorURL: "http://localhost:8000", - } - t(cfg) - return cfg - } - - tests := []struct { - name string - transform func(cfg *Config) - wantErr bool - }{ - { - "ok", - func(cfg *Config) {}, - false, - }, - { - "err: device is empty", - func(cfg *Config) { - cfg.Device = "" - }, - true, - }, - { - "err: addr is empty", - func(cfg *Config) { - cfg.Addr = "" - }, - true, - }, - { - "err: aggregator-url is empty", - func(cfg *Config) { - cfg.AggregatorURL = "" - }, - true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - cfg := newValidStruct(tt.transform) - err := cfg.Validate() - if tt.wantErr { - assert.Error(t, err) - } else { - assert.Nil(t, err) - } - }) - } -} - -func TestNewRootCmd(t *testing.T) { - tests := []struct { - name string - args []string - wantErr bool - }{ - { - "err: device not set", - []string{"kuesta-subscribe", "-addr=:9339", "-aggregator-url=http://localhost:8080"}, - true, - }, - { - "err: addr not set", - []string{"kuesta-subscribe", "-d=device1", "-aggregator-url=http://localhost:8080"}, - true, - }, - { - "err: aggregator-url not set", - []string{"kuesta-subscribe", "-d=device1", "-addr=:9339"}, - true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - c := NewRootCmd() - c.SetArgs(tt.args) - err := c.Execute() - if tt.wantErr { - assert.Error(t, err) - } else { - assert.Nil(t, err) - } - }) - } -} diff --git a/device-subscriber/internal/cmd/subscribe.go b/device-subscriber/internal/cmd/subscribe.go deleted file mode 100644 index d32c5f1..0000000 --- a/device-subscriber/internal/cmd/subscribe.go +++ /dev/null @@ -1,273 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package cmd - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "io" - "net/http" - "net/url" - "path" - "time" - - "cuelang.org/go/cue" - "cuelang.org/go/cue/cuecontext" - "github.com/nttcom/kuesta/device-subscriber/internal/logger" - "github.com/nttcom/kuesta/device-subscriber/internal/model" - "github.com/nttcom/kuesta/pkg/credentials" - kcue "github.com/nttcom/kuesta/pkg/cue" - gclient "github.com/openconfig/gnmi/client" - gnmiclient "github.com/openconfig/gnmi/client/gnmi" - "github.com/openconfig/gnmi/proto/gnmi" - "github.com/pkg/errors" -) - -func Run(cfg Config) error { - ctx := context.Background() - l := logger.FromContext(ctx) - l.Infow("start main run", "cfg", cfg.Mask()) - - dest, err := gNMIDestination(cfg) - if err != nil { - return fmt.Errorf("setup gnmi destination: %w", err) - } - - c, err := gnmiclient.New(ctx, dest) - if err != nil { - return fmt.Errorf("create gNMI client: %w", errors.WithStack(err)) - } - - fn := func() error { - return Sync(ctx, cfg, c.(*gnmiclient.Client)) - } - if err := fn(); err != nil { - logger.ErrorWithStack(ctx, err, "initial sync") - } - if err := Subscribe(ctx, c, fn); err != nil { - return err - } - return nil -} - -func Subscribe(ctx context.Context, c gclient.Impl, fn func() error) error { - l := logger.FromContext(ctx) - - query := gclient.Query{ - Type: gclient.Stream, - NotificationHandler: func(noti gclient.Notification) error { - if err, ok := noti.(error); ok { - return fmt.Errorf("error received: %w", err) - } - // NOTE Run something if needed - return nil - }, - } - - l.Infow("subscribe starting") - if err := c.Subscribe(ctx, query); err != nil { - return fmt.Errorf("open subscribe channel: %w", errors.WithStack(err)) - } - l.Infow("subscribe started") - - defer func() { - if err := c.Close(); err != nil { - l.Errorf("close gNMI subscription: %w", err) - } - }() - - for { - recvErr := c.Recv() - l.Infow("recv hooked") - if err := fn(); err != nil { - logger.ErrorWithStack(ctx, err, "handle notification") - } - - if errors.Is(recvErr, io.EOF) { - l.Debugw("EOF received") - return nil - } else if recvErr != nil { - return fmt.Errorf("error received on gNMI subscribe channel: %w", recvErr) - } - } -} - -func Sync(ctx context.Context, cfg Config, client *gnmiclient.Client) error { - l := logger.FromContext(ctx) - l.Infow("sync started") - - buf, err := GetEntireConfig(ctx, client) - if err != nil { - return fmt.Errorf("get device config: %w", err) - } - - // unmarshal - var obj model.Device - schema, err := model.Schema() - if err != nil { - return err - } - if err := schema.Unmarshal(buf, &obj); err != nil { - return fmt.Errorf("decode JSON IETF val of gNMI update: %w", err) - } - - // convert to CUE - cctx := cuecontext.New() - v := cctx.Encode(obj) - b, err := kcue.FormatCue(v, cue.Final()) - if err != nil { - return fmt.Errorf("encode cue.Value to bytes: %w", err) - } - - if err := PostDeviceConfig(ctx, cfg, b); err != nil { - return err - } - - l.Infow("sync completed") - return nil -} - -type SaveConfigRequest struct { - Device string `json:"device"` - Config string `json:"config"` -} - -// PostDeviceConfig sends HTTP POST with supplied device config. -func PostDeviceConfig(ctx context.Context, cfg Config, data []byte) error { - l := logger.FromContext(ctx) - - u, err := url.Parse(cfg.AggregatorURL) - if err != nil { - return fmt.Errorf("url parse error: %w", errors.WithStack(err)) - } - u.Path = path.Join(u.Path, "commit") - body := SaveConfigRequest{ - Device: cfg.Device, - Config: string(data), - } - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(&body); err != nil { - return fmt.Errorf("json encode error: %w", errors.WithStack(err)) - } - - c, err := httpClient(cfg.TLSClientConfig()) - if err != nil { - return fmt.Errorf("create http client: %w", err) - } - req, err := http.NewRequestWithContext(ctx, http.MethodPost, u.String(), &buf) - if err != nil { - return fmt.Errorf("create http request: %w", err) - } - req.Header.Set("Content-Type", "application/json") - resp, err := c.Do(req) - if err != nil { - return fmt.Errorf("post: %w", errors.WithStack(err)) - } - defer resp.Body.Close() - - var bodyBuf []byte - if _, err := io.ReadFull(resp.Body, bodyBuf); err != nil { - l.Errorw("reading response body", "error", err) - } - if resp.StatusCode != 200 { - return errors.WithStack(fmt.Errorf("error code=%d: %s", resp.StatusCode, bodyBuf)) - } - return nil -} - -func gNMIDestination(cfg Config) (gclient.Destination, error) { - dest := gclient.Destination{ - Addrs: []string{cfg.Addr}, - Target: "", - Timeout: 60 * time.Second, - Credentials: &gclient.Credentials{ - Username: cfg.Username, - Password: cfg.Password, - }, - } - if cfg.NoTLS { - return dest, nil - } - tlsDeviceCfg := cfg.DeviceTLSClientConfig() - tlsCfg, err := credentials.NewTLSConfig(tlsDeviceCfg.Certificates(false), tlsDeviceCfg.VerifyServer()) - if err != nil { - return gclient.Destination{}, fmt.Errorf("get tls config: %w", err) - } - dest.TLS = tlsCfg - return dest, nil -} - -func httpClient(cfg *credentials.TLSClientConfig) (*http.Client, error) { - c := &http.Client{} - if cfg.NoTLS { - return c, nil - } - tlsCfg, err := credentials.NewTLSConfig(cfg.Certificates(false), cfg.VerifyServer()) - if err != nil { - return nil, fmt.Errorf("new tls config: %w", err) - } - c.Transport = &http.Transport{ - TLSClientConfig: tlsCfg, - } - return c, nil -} - -// ExtractJsonIetfVal extracts the JSON IETF field of the supplied TypedValue. -func ExtractJsonIetfVal(tv *gnmi.TypedValue) ([]byte, error) { - v, ok := tv.GetValue().(*gnmi.TypedValue_JsonIetfVal) - if !ok { - return nil, errors.WithStack(fmt.Errorf("value did not contain IETF JSON")) - } - return v.JsonIetfVal, nil -} - -// GetEntireConfig requests gNMI GetRequest and returns entire device config as. -func GetEntireConfig(ctx context.Context, client *gnmiclient.Client) ([]byte, error) { - req := gnmi.GetRequest{ - Path: []*gnmi.Path{ - {}, // TODO consider to specify target and path - }, - Encoding: gnmi.Encoding_JSON_IETF, - } - - resp, err := client.Get(ctx, &req) - if err != nil { - return nil, errors.WithStack(err) - } - - // resolve gnmi TypedValue - var tv *gnmi.TypedValue - for _, v := range resp.GetNotification() { - for _, u := range v.GetUpdate() { - tv = u.GetVal() - break - } - } - if tv == nil { - return nil, errors.WithStack(fmt.Errorf("no content from gNMI server")) - } - - return ExtractJsonIetfVal(tv) -} diff --git a/device-subscriber/internal/cmd/subscribe_test.go b/device-subscriber/internal/cmd/subscribe_test.go deleted file mode 100644 index 845706c..0000000 --- a/device-subscriber/internal/cmd/subscribe_test.go +++ /dev/null @@ -1,284 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package cmd - -import ( - "context" - "encoding/json" - "net/http" - "net/http/httptest" - "testing" - "time" - - "github.com/nttcom/kuesta/pkg/testing/gnmihelper" - "github.com/nttcom/kuesta/pkg/testing/testhelper" - gclient "github.com/openconfig/gnmi/client" - gnmiclient "github.com/openconfig/gnmi/client/gnmi" - "github.com/openconfig/gnmi/proto/gnmi" - pb "github.com/openconfig/gnmi/proto/gnmi" - "github.com/stretchr/testify/assert" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func TestSubscribe(t *testing.T) { - v := gnmi.TypedValue{ - Value: &gnmi.TypedValue_JsonIetfVal{ - JsonIetfVal: []byte(`{"foo": "bar"}`), - }, - } - m := &gnmihelper.GnmiMock{ - SubscribeHandler: func(stream pb.GNMI_SubscribeServer) error { - for i := 0; i < 3; i++ { - resp := &pb.SubscribeResponse{ - Response: &pb.SubscribeResponse_Update{ - Update: &pb.Notification{ - Timestamp: time.Now().UnixNano(), - Update: []*pb.Update{ - {Path: &pb.Path{Target: "*"}, Val: &v}, - }, - }, - }, - } - if err := stream.Send(resp); err != nil { - return err - } - } - return nil - }, - } - ctx := context.Background() - gs, conn := gnmihelper.NewGnmiServer(ctx, m) - defer gs.Stop() - - client, err := gnmiclient.NewFromConn(ctx, conn, gclient.Destination{}) - testhelper.ExitOnErr(t, err) - - count := 0 - err = Subscribe(ctx, client, func() error { - count++ - return nil - }) - assert.Nil(t, err) - assert.Equal(t, 3+1, count) -} - -func TestSync(t *testing.T) { - config := []byte(`{ - "openconfig-interfaces:interfaces": { - "interface": [ - { - "config": { - "description": "foo", - "enabled": true, - "mtu": 9000, - "name": "Ethernet1", - "type": "iana-if-type:ethernetCsmacd" - }, - "name": "Ethernet1", - "state": { - "admin-status": "UP", - "oper-status": "UP" - } - } - ] - } -} -`) - want := `{ - Interface: { - Ethernet1: { - AdminStatus: 1 - Description: "foo" - Enabled: true - Mtu: 9000 - Name: "Ethernet1" - OperStatus: 1 - Type: 80 - } - } -}` - - m := &gnmihelper.GnmiMock{ - GetHandler: func(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) { - v := gnmi.TypedValue{ - Value: &gnmi.TypedValue_JsonIetfVal{ - JsonIetfVal: config, - }, - } - resp := &pb.GetResponse{ - Notification: []*pb.Notification{ - { - Update: []*pb.Update{ - {Path: &pb.Path{}, Val: &v}, - }, - }, - }, - } - return resp, nil - }, - } - ctx := context.Background() - gs, conn := gnmihelper.NewGnmiServer(ctx, m) - defer gs.Stop() - - client, err := gnmiclient.NewFromConn(ctx, conn, gclient.Destination{}) - testhelper.ExitOnErr(t, err) - - cfg := Config{ - Device: "device1", - } - hs := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - var req SaveConfigRequest - testhelper.ExitOnErr(t, json.NewDecoder(r.Body).Decode(&req)) - assert.Equal(t, req.Device, cfg.Device) - assert.Equal(t, want, req.Config) - })) - cfg.AggregatorURL = hs.URL - - err = Sync(ctx, cfg, client) - assert.Nil(t, err) -} - -func TestGetEntireConfig(t *testing.T) { - config := []byte("dummy") - - tests := []struct { - name string - handler func(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) - wantErr bool - }{ - { - "ok", - func(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) { - v := gnmi.TypedValue{ - Value: &gnmi.TypedValue_JsonIetfVal{ - JsonIetfVal: config, - }, - } - resp := &pb.GetResponse{ - Notification: []*pb.Notification{ - { - Update: []*pb.Update{ - {Path: &pb.Path{}, Val: &v}, - }, - }, - }, - } - return resp, nil - }, - false, - }, - { - "err: no content", - func(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) { - resp := &pb.GetResponse{ - Notification: []*pb.Notification{}, - } - return resp, nil - }, - true, - }, - { - "err: error response", - func(ctx context.Context, request *pb.GetRequest) (*pb.GetResponse, error) { - return nil, status.Error(codes.Internal, "error") - }, - true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m := &gnmihelper.GnmiMock{ - GetHandler: tt.handler, - } - ctx := context.Background() - s, conn := gnmihelper.NewGnmiServer(ctx, m) - defer s.Stop() - - c, err := gnmiclient.NewFromConn(ctx, conn, gclient.Destination{}) - testhelper.ExitOnErr(t, err) - got, err := GetEntireConfig(ctx, c) - if tt.wantErr { - assert.Error(t, err) - } else { - assert.Nil(t, err) - assert.Equal(t, config, got) - } - }) - } -} - -func TestPostDeviceConfig(t *testing.T) { - deviceConfig := "dummy" - - t.Run("ok", func(t *testing.T) { - cfg := Config{ - Device: "device1", - } - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - var req SaveConfigRequest - testhelper.ExitOnErr(t, json.NewDecoder(r.Body).Decode(&req)) - assert.Equal(t, req.Device, cfg.Device) - assert.Equal(t, req.Config, deviceConfig) - })) - cfg.AggregatorURL = s.URL - - err := PostDeviceConfig(context.Background(), cfg, []byte(deviceConfig)) - assert.Nil(t, err) - }) - - t.Run("err: error response", func(t *testing.T) { - cfg := Config{ - Device: "device1", - } - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(500) - })) - cfg.AggregatorURL = s.URL - - err := PostDeviceConfig(context.Background(), cfg, []byte(deviceConfig)) - assert.Error(t, err) - }) - - t.Run("err: wrong url", func(t *testing.T) { - cfg := Config{ - Device: "device1", - } - cfg.AggregatorURL = ":60000" - - err := PostDeviceConfig(context.Background(), cfg, []byte(deviceConfig)) - assert.Error(t, err) - }) - - t.Run("err: connection error", func(t *testing.T) { - cfg := Config{ - Device: "device1", - } - cfg.AggregatorURL = "http://localhost:60000" - - err := PostDeviceConfig(context.Background(), cfg, []byte(deviceConfig)) - assert.Error(t, err) - }) -} diff --git a/device-subscriber/internal/logger/logger.go b/device-subscriber/internal/logger/logger.go deleted file mode 100644 index 7930631..0000000 --- a/device-subscriber/internal/logger/logger.go +++ /dev/null @@ -1,90 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package logger - -import ( - "context" - "fmt" - - "github.com/nttcom/kuesta/pkg/stacktrace" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -type _keyLogger struct{} - -var ( - config zap.Config - rootLogger *zap.Logger -) - -func init() { - SetDefault() -} - -func SetDefault() { - config = zap.NewProductionConfig() - rootLogger, _ = config.Build() -} - -func Setup(isDevel bool, lvl uint8, opts ...zap.Option) { - if isDevel { - config = zap.NewDevelopmentConfig() - } - config.Level = zap.NewAtomicLevelAt(ConvertLevel(lvl)) - rootLogger, _ = config.Build(opts...) -} - -func ConvertLevel(lvl uint8) zapcore.Level { - if lvl < 3 { - return zapcore.Level(1 - lvl) - } else { - return zapcore.DebugLevel - } -} - -func NewLogger() *zap.SugaredLogger { - return rootLogger.Sugar() -} - -func WithLogger(parent context.Context, logger *zap.SugaredLogger) context.Context { - return context.WithValue(parent, _keyLogger{}, logger) -} - -func FromContext(ctx context.Context) *zap.SugaredLogger { - v, ok := ctx.Value(_keyLogger{}).(*zap.SugaredLogger) - if !ok { - return NewLogger() - } else { - return v - } -} - -// ErrorWithStack shows error log along with its stacktrace. -func ErrorWithStack(ctx context.Context, err error, msg string, kvs ...interface{}) { - l := FromContext(ctx).WithOptions(zap.AddCallerSkip(1)) - if st := stacktrace.Get(err); st != "" { - l = l.With("stacktrace", st) - } - l.Errorw(fmt.Sprintf("%s: %v", msg, err), kvs...) -} diff --git a/device-subscriber/internal/logger/logger_test.go b/device-subscriber/internal/logger/logger_test.go deleted file mode 100644 index f64e3ed..0000000 --- a/device-subscriber/internal/logger/logger_test.go +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package logger_test - -import ( - "context" - "testing" - - "github.com/nttcom/kuesta/device-subscriber/internal/logger" - "github.com/stretchr/testify/assert" - "go.uber.org/zap/zapcore" -) - -func TestConvertLevel(t *testing.T) { - tests := []struct { - given uint8 - want zapcore.Level - }{ - {0, zapcore.WarnLevel}, - {1, zapcore.InfoLevel}, - {2, zapcore.DebugLevel}, - {3, zapcore.DebugLevel}, - } - - for _, tt := range tests { - assert.Equal(t, logger.ConvertLevel(tt.given), tt.want) - } -} - -func TestFromContext(t *testing.T) { - want := logger.NewLogger() - ctx := logger.WithLogger(context.Background(), want) - assert.Equal(t, want, logger.FromContext(ctx)) -} - -func TestSetup(t *testing.T) { - core := logger.NewLogger().Desugar().Core() - assert.Equal(t, false, core.Enabled(zapcore.DebugLevel)) - - logger.Setup(true, 2) - core = logger.NewLogger().Desugar().Core() - assert.Equal(t, true, core.Enabled(zapcore.DebugLevel)) - logger.SetDefault() -} diff --git a/device-subscriber/internal/model/generated.go b/device-subscriber/internal/model/generated.go deleted file mode 100644 index 33f7a83..0000000 --- a/device-subscriber/internal/model/generated.go +++ /dev/null @@ -1,6758 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -/* -Package model is a generated package which contains definitions -of structs which represent a YANG schema. The generated schema can be -compressed by a series of transformations (compression was true -in this case). - -This package was generated by /Users/hirokiokui/work/go/pkg/mod/github.com/openconfig/ygot@v0.24.0/genutil/names.go -using the following YANG input files: - - yang/openconfig-interfaces.yang - - yang/openconfig-if-ip.yang -Imported modules were sourced from: - - yang/... -*/ -package model - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/openconfig/goyang/pkg/yang" - "github.com/openconfig/ygot/ygot" - "github.com/openconfig/ygot/ytypes" -) - -// Binary is a type that is used for fields that have a YANG type of -// binary. It is used such that binary fields can be distinguished from -// leaf-lists of uint8s (which are mapped to []uint8, equivalent to -// []byte in reflection). -type Binary []byte - -// YANGEmpty is a type that is used for fields that have a YANG type of -// empty. It is used such that empty fields can be distinguished from boolean fields -// in the generated code. -type YANGEmpty bool - -var ( - SchemaTree map[string]*yang.Entry - ΛEnumTypes map[string][]reflect.Type -) - -func init() { - var err error - initΛEnumTypes() - if SchemaTree, err = UnzipSchema(); err != nil { - panic("schema error: " + err.Error()) - } -} - -// Schema returns the details of the generated schema. -func Schema() (*ytypes.Schema, error) { - uzp, err := UnzipSchema() - if err != nil { - return nil, fmt.Errorf("cannot unzip schema, %v", err) - } - - return &ytypes.Schema{ - Root: &Device{}, - SchemaTree: uzp, - Unmarshal: Unmarshal, - }, nil -} - -// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes, -// keyed by the name of the struct that the yang.Entry describes the schema for. -func UnzipSchema() (map[string]*yang.Entry, error) { - var schemaTree map[string]*yang.Entry - var err error - if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil { - return nil, fmt.Errorf("could not unzip the schema; %v", err) - } - return schemaTree, nil -} - -// Unmarshal unmarshals data, which must be RFC7951 JSON format, into -// destStruct, which must be non-nil and the correct GoStruct type. It returns -// an error if the destStruct is not found in the schema or the data cannot be -// unmarshaled. The supplied options (opts) are used to control the behaviour -// of the unmarshal function - for example, determining whether errors are -// thrown for unknown fields in the input JSON. -func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error { - tn := reflect.TypeOf(destStruct).Elem().Name() - schema, ok := SchemaTree[tn] - if !ok { - return fmt.Errorf("could not find schema for type %s", tn) - } - var jsonTree interface{} - if err := json.Unmarshal([]byte(data), &jsonTree); err != nil { - return err - } - return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...) -} - -// Device represents the /device YANG schema element. -type Device struct { - Interface map[string]*Interface `path:"interfaces/interface" module:"openconfig-interfaces/openconfig-interfaces"` - Vlan map[uint16]*Vlan `path:"vlans/vlan" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Device implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Device) IsYANGGoStruct() {} - -// NewInterface creates a new entry in the Interface list of the -// Device struct. The keys of the list are populated from the input -// arguments. -func (t *Device) NewInterface(Name string) (*Interface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Interface == nil { - t.Interface = make(map[string]*Interface) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Interface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Interface", key) - } - - t.Interface[key] = &Interface{ - Name: &Name, - } - - return t.Interface[key], nil -} - -// NewVlan creates a new entry in the Vlan list of the -// Device struct. The keys of the list are populated from the input -// arguments. -func (t *Device) NewVlan(VlanId uint16) (*Vlan, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Vlan == nil { - t.Vlan = make(map[uint16]*Vlan) - } - - key := VlanId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Vlan[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Vlan", key) - } - - t.Vlan[key] = &Vlan{ - VlanId: &VlanId, - } - - return t.Vlan[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Device) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Device) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Device. -func (*Device) ΛBelongingModule() string { - return "" -} - -// Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element. -type Interface struct { - AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"` - Aggregation *Interface_Aggregation `path:"aggregation" module:"openconfig-if-aggregate"` - Counters *Interface_Counters `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"` - Description *string `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"` - Enabled *bool `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"` - Ethernet *Interface_Ethernet `path:"ethernet" module:"openconfig-if-ethernet"` - HoldTime *Interface_HoldTime `path:"hold-time" module:"openconfig-interfaces"` - Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"` - LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-interfaces/openconfig-interfaces"` - Name *string `path:"config/name|name" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"` - OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"` - RoutedVlan *Interface_RoutedVlan `path:"routed-vlan" module:"openconfig-vlan"` - Subinterface map[uint32]*Interface_Subinterface `path:"subinterfaces/subinterface" module:"openconfig-interfaces/openconfig-interfaces"` - Type E_IETFInterfaces_InterfaceType `path:"config/type" module:"openconfig-interfaces/openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface) IsYANGGoStruct() {} - -// NewSubinterface creates a new entry in the Subinterface list of the -// Interface struct. The keys of the list are populated from the input -// arguments. -func (t *Interface) NewSubinterface(Index uint32) (*Interface_Subinterface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Subinterface == nil { - t.Subinterface = make(map[uint32]*Interface_Subinterface) - } - - key := Index - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Subinterface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Subinterface", key) - } - - t.Subinterface[key] = &Interface_Subinterface{ - Index: &Index, - } - - return t.Subinterface[key], nil -} - -// ΛListKeyMap returns the keys of the Interface struct, which is a YANG list entry. -func (t *Interface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface. -func (*Interface) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Aggregation represents the /openconfig-interfaces/interfaces/interface/aggregation YANG schema element. -type Interface_Aggregation struct { - LagSpeed *uint32 `path:"state/lag-speed" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - LagType E_OpenconfigIfAggregate_AggregationType `path:"config/lag-type" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - Member []string `path:"state/member" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - MinLinks *uint16 `path:"config/min-links" module:"openconfig-if-aggregate/openconfig-if-aggregate"` - SwitchedVlan *Interface_Aggregation_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Aggregation implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Aggregation) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Aggregation"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Aggregation) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Aggregation. -func (*Interface_Aggregation) ΛBelongingModule() string { - return "openconfig-if-aggregate" -} - -// Interface_Aggregation_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan YANG schema element. -type Interface_Aggregation_SwitchedVlan struct { - AccessVlan Interface_Aggregation_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"` - InterfaceMode E_OpenconfigVlanTypes_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"` - NativeVlan Interface_Aggregation_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"` - TrunkVlans []Interface_Aggregation_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Aggregation_SwitchedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Aggregation_SwitchedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Aggregation_SwitchedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Aggregation_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Aggregation_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Aggregation_SwitchedVlan. -func (*Interface_Aggregation_SwitchedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan within the YANG schema. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface { - Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String -// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() { -} - -// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_AccessVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan within the YANG schema. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface { - Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String -// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() { -} - -// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_NativeVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans within the YANG schema. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface { - Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans -// is to be set to a string value. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String struct { - String string -} - -// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String -// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() { -} - -// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans -// is to be set to a uint16 value. -type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 -// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() { -} - -// To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String{v}, nil - case uint16: - return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element. -type Interface_Counters struct { - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *string `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Counters. -func (*Interface_Counters) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Ethernet represents the /openconfig-interfaces/interfaces/interface/ethernet YANG schema element. -type Interface_Ethernet struct { - AggregateId *string `path:"config/aggregate-id" module:"openconfig-if-ethernet/openconfig-if-aggregate"` - AutoNegotiate *bool `path:"config/auto-negotiate" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - Counters *Interface_Ethernet_Counters `path:"state/counters" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - DuplexMode E_Ethernet_DuplexMode `path:"config/duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - EffectiveSpeed *uint32 `path:"state/effective-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - EnableFlowControl *bool `path:"config/enable-flow-control" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - HwMacAddress *string `path:"state/hw-mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - MacAddress *string `path:"config/mac-address" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - NegotiatedDuplexMode E_Ethernet_NegotiatedDuplexMode `path:"state/negotiated-duplex-mode" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - NegotiatedPortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"state/negotiated-port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - PortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"config/port-speed" module:"openconfig-if-ethernet/openconfig-if-ethernet"` - SwitchedVlan *Interface_Ethernet_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet. -func (*Interface_Ethernet) ΛBelongingModule() string { - return "openconfig-if-ethernet" -} - -// Interface_Ethernet_Counters represents the /openconfig-interfaces/interfaces/interface/ethernet/state/counters YANG schema element. -type Interface_Ethernet_Counters struct { - In_8021QFrames *uint64 `path:"in-8021q-frames" module:"openconfig-if-ethernet"` - InCrcErrors *uint64 `path:"in-crc-errors" module:"openconfig-if-ethernet"` - InFragmentFrames *uint64 `path:"in-fragment-frames" module:"openconfig-if-ethernet"` - InJabberFrames *uint64 `path:"in-jabber-frames" module:"openconfig-if-ethernet"` - InMacControlFrames *uint64 `path:"in-mac-control-frames" module:"openconfig-if-ethernet"` - InMacPauseFrames *uint64 `path:"in-mac-pause-frames" module:"openconfig-if-ethernet"` - InOversizeFrames *uint64 `path:"in-oversize-frames" module:"openconfig-if-ethernet"` - Out_8021QFrames *uint64 `path:"out-8021q-frames" module:"openconfig-if-ethernet"` - OutMacControlFrames *uint64 `path:"out-mac-control-frames" module:"openconfig-if-ethernet"` - OutMacPauseFrames *uint64 `path:"out-mac-pause-frames" module:"openconfig-if-ethernet"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet_Counters. -func (*Interface_Ethernet_Counters) ΛBelongingModule() string { - return "openconfig-if-ethernet" -} - -// Interface_Ethernet_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan YANG schema element. -type Interface_Ethernet_SwitchedVlan struct { - AccessVlan Interface_Ethernet_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan/openconfig-vlan"` - InterfaceMode E_OpenconfigVlanTypes_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan/openconfig-vlan"` - NativeVlan Interface_Ethernet_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan/openconfig-vlan"` - TrunkVlans []Interface_Ethernet_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Ethernet_SwitchedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Ethernet_SwitchedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_SwitchedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Ethernet_SwitchedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Ethernet_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Ethernet_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Ethernet_SwitchedVlan. -func (*Interface_Ethernet_SwitchedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan within the YANG schema. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface { - Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String -// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() { -} - -// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_AccessVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan within the YANG schema. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface { - Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String -// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() { -} - -// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. -func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_NativeVlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans within the YANG schema. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface { - Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans -// is to be set to a string value. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String struct { - String string -} - -// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String -// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() { -} - -// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans -// is to be set to a uint16 value. -type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 -// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. -func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() { -} - -// To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String{v}, nil - case uint16: - return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element. -type Interface_HoldTime struct { - Down *uint32 `path:"config/down" module:"openconfig-interfaces/openconfig-interfaces"` - Up *uint32 `path:"config/up" module:"openconfig-interfaces/openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_HoldTime implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_HoldTime) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_HoldTime) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_HoldTime"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_HoldTime. -func (*Interface_HoldTime) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_RoutedVlan represents the /openconfig-interfaces/interfaces/interface/routed-vlan YANG schema element. -type Interface_RoutedVlan struct { - Ipv4 *Interface_RoutedVlan_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` - Ipv6 *Interface_RoutedVlan_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` - Vlan Interface_RoutedVlan_Vlan_Union `path:"config/vlan" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan. -func (*Interface_RoutedVlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_RoutedVlan_Vlan_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan within the YANG schema. -type Interface_RoutedVlan_Vlan_Union interface { - Is_Interface_RoutedVlan_Vlan_Union() -} - -// Interface_RoutedVlan_Vlan_Union_String is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan -// is to be set to a string value. -type Interface_RoutedVlan_Vlan_Union_String struct { - String string -} - -// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_String -// implements the Interface_RoutedVlan_Vlan_Union interface. -func (*Interface_RoutedVlan_Vlan_Union_String) Is_Interface_RoutedVlan_Vlan_Union() {} - -// Interface_RoutedVlan_Vlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan -// is to be set to a uint16 value. -type Interface_RoutedVlan_Vlan_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_Uint16 -// implements the Interface_RoutedVlan_Vlan_Union interface. -func (*Interface_RoutedVlan_Vlan_Union_Uint16) Is_Interface_RoutedVlan_Vlan_Union() {} - -// To_Interface_RoutedVlan_Vlan_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_RoutedVlan_Vlan_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_RoutedVlan) To_Interface_RoutedVlan_Vlan_Union(i interface{}) (Interface_RoutedVlan_Vlan_Union, error) { - switch v := i.(type) { - case string: - return &Interface_RoutedVlan_Vlan_Union_String{v}, nil - case uint16: - return &Interface_RoutedVlan_Vlan_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_RoutedVlan_Vlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Interface_RoutedVlan_Ipv4 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4 YANG schema element. -type Interface_RoutedVlan_Ipv4 struct { - Address map[string]*Interface_RoutedVlan_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_RoutedVlan_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_RoutedVlan_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv4_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_RoutedVlan_Ipv4_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv4_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_RoutedVlan_Ipv4_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4. -func (*Interface_RoutedVlan_Ipv4) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address YANG schema element. -type Interface_RoutedVlan_Ipv4_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_RoutedVlan_Ipv4_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv4_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address. -func (*Interface_RoutedVlan_Ipv4_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking. -func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor YANG schema element. -type Interface_RoutedVlan_Ipv4_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Neighbor struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Neighbor. -func (*Interface_RoutedVlan_Ipv4_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered YANG schema element. -type Interface_RoutedVlan_Ipv4_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Unnumbered. -func (*Interface_RoutedVlan_Ipv4_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref YANG schema element. -type Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef. -func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6 YANG schema element. -type Interface_RoutedVlan_Ipv6 struct { - Address map[string]*Interface_RoutedVlan_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_RoutedVlan_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_RoutedVlan_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv6_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_RoutedVlan_Ipv6_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv6_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_RoutedVlan_Ipv6_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6. -func (*Interface_RoutedVlan_Ipv6) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address YANG schema element. -type Interface_RoutedVlan_Ipv6_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - Status E_Address_Status `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_RoutedVlan_Ipv6_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_RoutedVlan_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv6_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address. -func (*Interface_RoutedVlan_Ipv6_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking. -func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor YANG schema element. -type Interface_RoutedVlan_Ipv6_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Neighbor struct, which is a YANG list entry. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Neighbor. -func (*Interface_RoutedVlan_Ipv6_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered YANG schema element. -type Interface_RoutedVlan_Ipv6_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Unnumbered. -func (*Interface_RoutedVlan_Ipv6_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref YANG schema element. -type Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef. -func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element. -type Interface_Subinterface struct { - AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces/openconfig-interfaces"` - Counters *Interface_Subinterface_Counters `path:"state/counters" module:"openconfig-interfaces/openconfig-interfaces"` - Description *string `path:"config/description" module:"openconfig-interfaces/openconfig-interfaces"` - Enabled *bool `path:"config/enabled" module:"openconfig-interfaces/openconfig-interfaces"` - Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces/openconfig-interfaces"` - Index *uint32 `path:"config/index|index" module:"openconfig-interfaces/openconfig-interfaces|openconfig-interfaces"` - Ipv4 *Interface_Subinterface_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` - Ipv6 *Interface_Subinterface_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` - LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces/openconfig-interfaces"` - Name *string `path:"config/name" module:"openconfig-interfaces/openconfig-interfaces"` - OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces/openconfig-interfaces"` - Vlan *Interface_Subinterface_Vlan `path:"vlan" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface struct, which is a YANG list entry. -func (t *Interface_Subinterface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Index == nil { - return nil, fmt.Errorf("nil value for key Index") - } - - return map[string]interface{}{ - "index": *t.Index, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface. -func (*Interface_Subinterface) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Subinterface_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element. -type Interface_Subinterface_Counters struct { - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *string `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Counters) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Counters) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Counters. -func (*Interface_Subinterface_Counters) ΛBelongingModule() string { - return "openconfig-interfaces" -} - -// Interface_Subinterface_Ipv4 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4 YANG schema element. -type Interface_Subinterface_Ipv4 struct { - Address map[string]*Interface_Subinterface_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_Subinterface_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_Subinterface_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4) NewAddress(Ip string) (*Interface_Subinterface_Ipv4_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_Subinterface_Ipv4_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv4_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_Subinterface_Ipv4_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4. -func (*Interface_Subinterface_Ipv4) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address YANG schema element. -type Interface_Subinterface_Ipv4_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_Subinterface_Ipv4_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv4_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_Subinterface_Ipv4_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address. -func (*Interface_Subinterface_Ipv4_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_Subinterface_Ipv4_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address_VrrpGroup. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking. -func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor YANG schema element. -type Interface_Subinterface_Ipv4_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Neighbor struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Neighbor. -func (*Interface_Subinterface_Ipv4_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered YANG schema element. -type Interface_Subinterface_Ipv4_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Unnumbered. -func (*Interface_Subinterface_Ipv4_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref YANG schema element. -type Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef. -func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6 YANG schema element. -type Interface_Subinterface_Ipv6 struct { - Address map[string]*Interface_Subinterface_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip/openconfig-if-ip"` - DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip/openconfig-if-ip"` - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip/openconfig-if-ip"` - Neighbor map[string]*Interface_Subinterface_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip/openconfig-if-ip"` - Unnumbered *Interface_Subinterface_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6 implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6) IsYANGGoStruct() {} - -// NewAddress creates a new entry in the Address list of the -// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6) NewAddress(Ip string) (*Interface_Subinterface_Ipv6_Address, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Address == nil { - t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Address[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Address", key) - } - - t.Address[key] = &Interface_Subinterface_Ipv6_Address{ - Ip: &Ip, - } - - return t.Address[key], nil -} - -// NewNeighbor creates a new entry in the Neighbor list of the -// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv6_Neighbor, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Neighbor == nil { - t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor) - } - - key := Ip - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Neighbor[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) - } - - t.Neighbor[key] = &Interface_Subinterface_Ipv6_Neighbor{ - Ip: &Ip, - } - - return t.Neighbor[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6. -func (*Interface_Subinterface_Ipv6) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address YANG schema element. -type Interface_Subinterface_Ipv6_Address struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` - PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip/openconfig-if-ip"` - Status E_Address_Status `path:"state/status" module:"openconfig-if-ip/openconfig-if-ip"` - VrrpGroup map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address) IsYANGGoStruct() {} - -// NewVrrpGroup creates a new entry in the VrrpGroup list of the -// Interface_Subinterface_Ipv6_Address struct. The keys of the list are populated from the input -// arguments. -func (t *Interface_Subinterface_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv6_Address_VrrpGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.VrrpGroup == nil { - t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup) - } - - key := VirtualRouterId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.VrrpGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) - } - - t.VrrpGroup[key] = &Interface_Subinterface_Ipv6_Address_VrrpGroup{ - VirtualRouterId: &VirtualRouterId, - } - - return t.VrrpGroup[key], nil -} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address. -func (*Interface_Subinterface_Ipv6_Address) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. -type Interface_Subinterface_Ipv6_Address_VrrpGroup struct { - AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip/openconfig-if-ip"` - AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip/openconfig-if-ip"` - CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceTracking *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` - Preempt *bool `path:"config/preempt" module:"openconfig-if-ip/openconfig-if-ip"` - PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip/openconfig-if-ip"` - Priority *uint8 `path:"config/priority" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip/openconfig-if-ip"` - VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.VirtualRouterId == nil { - return nil, fmt.Errorf("nil value for key VirtualRouterId") - } - - return map[string]interface{}{ - "virtual-router-id": *t.VirtualRouterId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address_VrrpGroup. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. -type Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking struct { - PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip/openconfig-if-ip"` - TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking. -func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor YANG schema element. -type Interface_Subinterface_Ipv6_Neighbor struct { - Ip *string `path:"config/ip|ip" module:"openconfig-if-ip/openconfig-if-ip|openconfig-if-ip"` - IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip/openconfig-if-ip"` - LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip/openconfig-if-ip"` - NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip/openconfig-if-ip"` - Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Neighbor implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Neighbor) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Neighbor struct, which is a YANG list entry. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { - if t.Ip == nil { - return nil, fmt.Errorf("nil value for key Ip") - } - - return map[string]interface{}{ - "ip": *t.Ip, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Neighbor"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Neighbor. -func (*Interface_Subinterface_Ipv6_Neighbor) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered YANG schema element. -type Interface_Subinterface_Ipv6_Unnumbered struct { - Enabled *bool `path:"config/enabled" module:"openconfig-if-ip/openconfig-if-ip"` - InterfaceRef *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Unnumbered) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Unnumbered. -func (*Interface_Subinterface_Ipv6_Unnumbered) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref YANG schema element. -type Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef struct { - Interface *string `path:"config/interface" module:"openconfig-if-ip/openconfig-if-ip"` - Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip/openconfig-if-ip"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef. -func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛBelongingModule() string { - return "openconfig-if-ip" -} - -// Interface_Subinterface_Vlan represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan YANG schema element. -type Interface_Subinterface_Vlan struct { - VlanId Interface_Subinterface_Vlan_VlanId_Union `path:"config/vlan-id" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Interface_Subinterface_Vlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Interface_Subinterface_Vlan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Vlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Interface_Subinterface_Vlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Interface_Subinterface_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Interface_Subinterface_Vlan. -func (*Interface_Subinterface_Vlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Interface_Subinterface_Vlan_VlanId_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id within the YANG schema. -type Interface_Subinterface_Vlan_VlanId_Union interface { - Is_Interface_Subinterface_Vlan_VlanId_Union() -} - -// Interface_Subinterface_Vlan_VlanId_Union_String is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id -// is to be set to a string value. -type Interface_Subinterface_Vlan_VlanId_Union_String struct { - String string -} - -// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_String -// implements the Interface_Subinterface_Vlan_VlanId_Union interface. -func (*Interface_Subinterface_Vlan_VlanId_Union_String) Is_Interface_Subinterface_Vlan_VlanId_Union() { -} - -// Interface_Subinterface_Vlan_VlanId_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id -// is to be set to a uint16 value. -type Interface_Subinterface_Vlan_VlanId_Union_Uint16 struct { - Uint16 uint16 -} - -// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_Uint16 -// implements the Interface_Subinterface_Vlan_VlanId_Union interface. -func (*Interface_Subinterface_Vlan_VlanId_Union_Uint16) Is_Interface_Subinterface_Vlan_VlanId_Union() { -} - -// To_Interface_Subinterface_Vlan_VlanId_Union takes an input interface{} and attempts to convert it to a struct -// which implements the Interface_Subinterface_Vlan_VlanId_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *Interface_Subinterface_Vlan) To_Interface_Subinterface_Vlan_VlanId_Union(i interface{}) (Interface_Subinterface_Vlan_VlanId_Union, error) { - switch v := i.(type) { - case string: - return &Interface_Subinterface_Vlan_VlanId_Union_String{v}, nil - case uint16: - return &Interface_Subinterface_Vlan_VlanId_Union_Uint16{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to Interface_Subinterface_Vlan_VlanId_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) - } -} - -// Vlan represents the /openconfig-vlan/vlans/vlan YANG schema element. -type Vlan struct { - Member []*Vlan_Member `path:"members/member" module:"openconfig-vlan/openconfig-vlan"` - Name *string `path:"config/name" module:"openconfig-vlan/openconfig-vlan"` - Status E_Vlan_Status `path:"config/status" module:"openconfig-vlan/openconfig-vlan"` - Tpid E_OpenconfigVlanTypes_TPID_TYPES `path:"config/tpid" module:"openconfig-vlan/openconfig-vlan"` - VlanId *uint16 `path:"config/vlan-id|vlan-id" module:"openconfig-vlan/openconfig-vlan|openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the Vlan struct, which is a YANG list entry. -func (t *Vlan) ΛListKeyMap() (map[string]interface{}, error) { - if t.VlanId == nil { - return nil, fmt.Errorf("nil value for key VlanId") - } - - return map[string]interface{}{ - "vlan-id": *t.VlanId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan. -func (*Vlan) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Vlan_Member represents the /openconfig-vlan/vlans/vlan/members/member YANG schema element. -type Vlan_Member struct { - InterfaceRef *Vlan_Member_InterfaceRef `path:"interface-ref" module:"openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan_Member implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan_Member) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan_Member"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan_Member) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan_Member. -func (*Vlan_Member) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// Vlan_Member_InterfaceRef represents the /openconfig-vlan/vlans/vlan/members/member/interface-ref YANG schema element. -type Vlan_Member_InterfaceRef struct { - Interface *string `path:"state/interface" module:"openconfig-vlan/openconfig-vlan"` - Subinterface *uint32 `path:"state/subinterface" module:"openconfig-vlan/openconfig-vlan"` -} - -// IsYANGGoStruct ensures that Vlan_Member_InterfaceRef implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Vlan_Member_InterfaceRef) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member_InterfaceRef) ΛValidate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Vlan_Member_InterfaceRef"], t, opts...); err != nil { - return err - } - return nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Vlan_Member_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { - return t.ΛValidate(opts...) -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Vlan_Member_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// ΛBelongingModule returns the name of the module that defines the namespace -// of Vlan_Member_InterfaceRef. -func (*Vlan_Member_InterfaceRef) ΛBelongingModule() string { - return "openconfig-vlan" -} - -// E_Address_Status is a derived int64 type which is used to represent -// the enumerated node Address_Status. An additional value named -// Address_Status_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Address_Status int64 - -// IsYANGGoEnum ensures that Address_Status implements the yang.GoEnum -// interface. This ensures that Address_Status can be identified as a -// mapped type for a YANG enumeration. -func (E_Address_Status) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Address_Status. -func (E_Address_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Address_Status. -func (e E_Address_Status) String() string { - return ygot.EnumLogString(e, int64(e), "E_Address_Status") -} - -const ( - // Address_Status_UNSET corresponds to the value UNSET of Address_Status - Address_Status_UNSET E_Address_Status = 0 - // Address_Status_PREFERRED corresponds to the value PREFERRED of Address_Status - Address_Status_PREFERRED E_Address_Status = 1 - // Address_Status_DEPRECATED corresponds to the value DEPRECATED of Address_Status - Address_Status_DEPRECATED E_Address_Status = 2 - // Address_Status_INVALID corresponds to the value INVALID of Address_Status - Address_Status_INVALID E_Address_Status = 3 - // Address_Status_INACCESSIBLE corresponds to the value INACCESSIBLE of Address_Status - Address_Status_INACCESSIBLE E_Address_Status = 4 - // Address_Status_UNKNOWN corresponds to the value UNKNOWN of Address_Status - Address_Status_UNKNOWN E_Address_Status = 5 - // Address_Status_TENTATIVE corresponds to the value TENTATIVE of Address_Status - Address_Status_TENTATIVE E_Address_Status = 6 - // Address_Status_DUPLICATE corresponds to the value DUPLICATE of Address_Status - Address_Status_DUPLICATE E_Address_Status = 7 - // Address_Status_OPTIMISTIC corresponds to the value OPTIMISTIC of Address_Status - Address_Status_OPTIMISTIC E_Address_Status = 8 -) - -// E_Ethernet_DuplexMode is a derived int64 type which is used to represent -// the enumerated node Ethernet_DuplexMode. An additional value named -// Ethernet_DuplexMode_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Ethernet_DuplexMode int64 - -// IsYANGGoEnum ensures that Ethernet_DuplexMode implements the yang.GoEnum -// interface. This ensures that Ethernet_DuplexMode can be identified as a -// mapped type for a YANG enumeration. -func (E_Ethernet_DuplexMode) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Ethernet_DuplexMode. -func (E_Ethernet_DuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Ethernet_DuplexMode. -func (e E_Ethernet_DuplexMode) String() string { - return ygot.EnumLogString(e, int64(e), "E_Ethernet_DuplexMode") -} - -const ( - // Ethernet_DuplexMode_UNSET corresponds to the value UNSET of Ethernet_DuplexMode - Ethernet_DuplexMode_UNSET E_Ethernet_DuplexMode = 0 - // Ethernet_DuplexMode_FULL corresponds to the value FULL of Ethernet_DuplexMode - Ethernet_DuplexMode_FULL E_Ethernet_DuplexMode = 1 - // Ethernet_DuplexMode_HALF corresponds to the value HALF of Ethernet_DuplexMode - Ethernet_DuplexMode_HALF E_Ethernet_DuplexMode = 2 -) - -// E_Ethernet_NegotiatedDuplexMode is a derived int64 type which is used to represent -// the enumerated node Ethernet_NegotiatedDuplexMode. An additional value named -// Ethernet_NegotiatedDuplexMode_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Ethernet_NegotiatedDuplexMode int64 - -// IsYANGGoEnum ensures that Ethernet_NegotiatedDuplexMode implements the yang.GoEnum -// interface. This ensures that Ethernet_NegotiatedDuplexMode can be identified as a -// mapped type for a YANG enumeration. -func (E_Ethernet_NegotiatedDuplexMode) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Ethernet_NegotiatedDuplexMode. -func (E_Ethernet_NegotiatedDuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_Ethernet_NegotiatedDuplexMode. -func (e E_Ethernet_NegotiatedDuplexMode) String() string { - return ygot.EnumLogString(e, int64(e), "E_Ethernet_NegotiatedDuplexMode") -} - -const ( - // Ethernet_NegotiatedDuplexMode_UNSET corresponds to the value UNSET of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_UNSET E_Ethernet_NegotiatedDuplexMode = 0 - // Ethernet_NegotiatedDuplexMode_FULL corresponds to the value FULL of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_FULL E_Ethernet_NegotiatedDuplexMode = 1 - // Ethernet_NegotiatedDuplexMode_HALF corresponds to the value HALF of Ethernet_NegotiatedDuplexMode - Ethernet_NegotiatedDuplexMode_HALF E_Ethernet_NegotiatedDuplexMode = 2 -) - -// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent -// the enumerated node IETFInterfaces_InterfaceType. An additional value named -// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_IETFInterfaces_InterfaceType int64 - -// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum -// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a -// mapped type for a YANG enumeration. -func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with IETFInterfaces_InterfaceType. -func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_IETFInterfaces_InterfaceType. -func (e E_IETFInterfaces_InterfaceType) String() string { - return ygot.EnumLogString(e, int64(e), "E_IETFInterfaces_InterfaceType") -} - -const ( - // IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0 - // IETFInterfaces_InterfaceType_a12MppSwitch corresponds to the value a12MppSwitch of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_a12MppSwitch E_IETFInterfaces_InterfaceType = 1 - // IETFInterfaces_InterfaceType_aal2 corresponds to the value aal2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aal2 E_IETFInterfaces_InterfaceType = 2 - // IETFInterfaces_InterfaceType_aal5 corresponds to the value aal5 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aal5 E_IETFInterfaces_InterfaceType = 3 - // IETFInterfaces_InterfaceType_actelisMetaLOOP corresponds to the value actelisMetaLOOP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_actelisMetaLOOP E_IETFInterfaces_InterfaceType = 4 - // IETFInterfaces_InterfaceType_adsl corresponds to the value adsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl E_IETFInterfaces_InterfaceType = 5 - // IETFInterfaces_InterfaceType_adsl2 corresponds to the value adsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl2 E_IETFInterfaces_InterfaceType = 6 - // IETFInterfaces_InterfaceType_adsl2plus corresponds to the value adsl2plus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_adsl2plus E_IETFInterfaces_InterfaceType = 7 - // IETFInterfaces_InterfaceType_aflane8023 corresponds to the value aflane8023 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aflane8023 E_IETFInterfaces_InterfaceType = 8 - // IETFInterfaces_InterfaceType_aflane8025 corresponds to the value aflane8025 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aflane8025 E_IETFInterfaces_InterfaceType = 9 - // IETFInterfaces_InterfaceType_aluELP corresponds to the value aluELP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluELP E_IETFInterfaces_InterfaceType = 10 - // IETFInterfaces_InterfaceType_aluEpon corresponds to the value aluEpon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEpon E_IETFInterfaces_InterfaceType = 11 - // IETFInterfaces_InterfaceType_aluEponLogicalLink corresponds to the value aluEponLogicalLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponLogicalLink E_IETFInterfaces_InterfaceType = 12 - // IETFInterfaces_InterfaceType_aluEponOnu corresponds to the value aluEponOnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponOnu E_IETFInterfaces_InterfaceType = 13 - // IETFInterfaces_InterfaceType_aluEponPhysicalUni corresponds to the value aluEponPhysicalUni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluEponPhysicalUni E_IETFInterfaces_InterfaceType = 14 - // IETFInterfaces_InterfaceType_aluGponOnu corresponds to the value aluGponOnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluGponOnu E_IETFInterfaces_InterfaceType = 15 - // IETFInterfaces_InterfaceType_aluGponPhysicalUni corresponds to the value aluGponPhysicalUni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aluGponPhysicalUni E_IETFInterfaces_InterfaceType = 16 - // IETFInterfaces_InterfaceType_arap corresponds to the value arap of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arap E_IETFInterfaces_InterfaceType = 17 - // IETFInterfaces_InterfaceType_arcnet corresponds to the value arcnet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arcnet E_IETFInterfaces_InterfaceType = 18 - // IETFInterfaces_InterfaceType_arcnetPlus corresponds to the value arcnetPlus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_arcnetPlus E_IETFInterfaces_InterfaceType = 19 - // IETFInterfaces_InterfaceType_async corresponds to the value async of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_async E_IETFInterfaces_InterfaceType = 20 - // IETFInterfaces_InterfaceType_atm corresponds to the value atm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atm E_IETFInterfaces_InterfaceType = 21 - // IETFInterfaces_InterfaceType_atmDxi corresponds to the value atmDxi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmDxi E_IETFInterfaces_InterfaceType = 22 - // IETFInterfaces_InterfaceType_atmFuni corresponds to the value atmFuni of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmFuni E_IETFInterfaces_InterfaceType = 23 - // IETFInterfaces_InterfaceType_atmIma corresponds to the value atmIma of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmIma E_IETFInterfaces_InterfaceType = 24 - // IETFInterfaces_InterfaceType_atmLogical corresponds to the value atmLogical of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmLogical E_IETFInterfaces_InterfaceType = 25 - // IETFInterfaces_InterfaceType_atmRadio corresponds to the value atmRadio of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmRadio E_IETFInterfaces_InterfaceType = 26 - // IETFInterfaces_InterfaceType_atmSubInterface corresponds to the value atmSubInterface of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmSubInterface E_IETFInterfaces_InterfaceType = 27 - // IETFInterfaces_InterfaceType_atmVciEndPt corresponds to the value atmVciEndPt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmVciEndPt E_IETFInterfaces_InterfaceType = 28 - // IETFInterfaces_InterfaceType_atmVirtual corresponds to the value atmVirtual of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmVirtual E_IETFInterfaces_InterfaceType = 29 - // IETFInterfaces_InterfaceType_atmbond corresponds to the value atmbond of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_atmbond E_IETFInterfaces_InterfaceType = 30 - // IETFInterfaces_InterfaceType_aviciOpticalEther corresponds to the value aviciOpticalEther of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_aviciOpticalEther E_IETFInterfaces_InterfaceType = 31 - // IETFInterfaces_InterfaceType_basicISDN corresponds to the value basicISDN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_basicISDN E_IETFInterfaces_InterfaceType = 32 - // IETFInterfaces_InterfaceType_bgppolicyaccounting corresponds to the value bgppolicyaccounting of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bgppolicyaccounting E_IETFInterfaces_InterfaceType = 33 - // IETFInterfaces_InterfaceType_bits corresponds to the value bits of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bits E_IETFInterfaces_InterfaceType = 34 - // IETFInterfaces_InterfaceType_bridge corresponds to the value bridge of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bridge E_IETFInterfaces_InterfaceType = 35 - // IETFInterfaces_InterfaceType_bsc corresponds to the value bsc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_bsc E_IETFInterfaces_InterfaceType = 36 - // IETFInterfaces_InterfaceType_cableDownstreamRfPort corresponds to the value cableDownstreamRfPort of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cableDownstreamRfPort E_IETFInterfaces_InterfaceType = 37 - // IETFInterfaces_InterfaceType_capwapDot11Bss corresponds to the value capwapDot11Bss of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapDot11Bss E_IETFInterfaces_InterfaceType = 38 - // IETFInterfaces_InterfaceType_capwapDot11Profile corresponds to the value capwapDot11Profile of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapDot11Profile E_IETFInterfaces_InterfaceType = 39 - // IETFInterfaces_InterfaceType_capwapWtpVirtualRadio corresponds to the value capwapWtpVirtualRadio of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_capwapWtpVirtualRadio E_IETFInterfaces_InterfaceType = 40 - // IETFInterfaces_InterfaceType_cblVectaStar corresponds to the value cblVectaStar of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cblVectaStar E_IETFInterfaces_InterfaceType = 41 - // IETFInterfaces_InterfaceType_cctEmul corresponds to the value cctEmul of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cctEmul E_IETFInterfaces_InterfaceType = 42 - // IETFInterfaces_InterfaceType_ces corresponds to the value ces of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ces E_IETFInterfaces_InterfaceType = 43 - // IETFInterfaces_InterfaceType_channel corresponds to the value channel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_channel E_IETFInterfaces_InterfaceType = 44 - // IETFInterfaces_InterfaceType_ciscoISLvlan corresponds to the value ciscoISLvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ciscoISLvlan E_IETFInterfaces_InterfaceType = 45 - // IETFInterfaces_InterfaceType_cnr corresponds to the value cnr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_cnr E_IETFInterfaces_InterfaceType = 46 - // IETFInterfaces_InterfaceType_coffee corresponds to the value coffee of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_coffee E_IETFInterfaces_InterfaceType = 47 - // IETFInterfaces_InterfaceType_compositeLink corresponds to the value compositeLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_compositeLink E_IETFInterfaces_InterfaceType = 48 - // IETFInterfaces_InterfaceType_dcn corresponds to the value dcn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dcn E_IETFInterfaces_InterfaceType = 49 - // IETFInterfaces_InterfaceType_ddnX25 corresponds to the value ddnX25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ddnX25 E_IETFInterfaces_InterfaceType = 50 - // IETFInterfaces_InterfaceType_digitalPowerline corresponds to the value digitalPowerline of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_digitalPowerline E_IETFInterfaces_InterfaceType = 51 - // IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel corresponds to the value digitalWrapperOverheadChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel E_IETFInterfaces_InterfaceType = 52 - // IETFInterfaces_InterfaceType_dlsw corresponds to the value dlsw of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dlsw E_IETFInterfaces_InterfaceType = 53 - // IETFInterfaces_InterfaceType_docsCableDownstream corresponds to the value docsCableDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableDownstream E_IETFInterfaces_InterfaceType = 54 - // IETFInterfaces_InterfaceType_docsCableMCmtsDownstream corresponds to the value docsCableMCmtsDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableMCmtsDownstream E_IETFInterfaces_InterfaceType = 55 - // IETFInterfaces_InterfaceType_docsCableMaclayer corresponds to the value docsCableMaclayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableMaclayer E_IETFInterfaces_InterfaceType = 56 - // IETFInterfaces_InterfaceType_docsCableUpstream corresponds to the value docsCableUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstream E_IETFInterfaces_InterfaceType = 57 - // IETFInterfaces_InterfaceType_docsCableUpstreamChannel corresponds to the value docsCableUpstreamChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstreamChannel E_IETFInterfaces_InterfaceType = 58 - // IETFInterfaces_InterfaceType_docsCableUpstreamRfPort corresponds to the value docsCableUpstreamRfPort of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_docsCableUpstreamRfPort E_IETFInterfaces_InterfaceType = 59 - // IETFInterfaces_InterfaceType_ds0 corresponds to the value ds0 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds0 E_IETFInterfaces_InterfaceType = 60 - // IETFInterfaces_InterfaceType_ds0Bundle corresponds to the value ds0Bundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds0Bundle E_IETFInterfaces_InterfaceType = 61 - // IETFInterfaces_InterfaceType_ds1 corresponds to the value ds1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds1 E_IETFInterfaces_InterfaceType = 62 - // IETFInterfaces_InterfaceType_ds1FDL corresponds to the value ds1FDL of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds1FDL E_IETFInterfaces_InterfaceType = 63 - // IETFInterfaces_InterfaceType_ds3 corresponds to the value ds3 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ds3 E_IETFInterfaces_InterfaceType = 64 - // IETFInterfaces_InterfaceType_dtm corresponds to the value dtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dtm E_IETFInterfaces_InterfaceType = 65 - // IETFInterfaces_InterfaceType_dvbAsiIn corresponds to the value dvbAsiIn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbAsiIn E_IETFInterfaces_InterfaceType = 66 - // IETFInterfaces_InterfaceType_dvbAsiOut corresponds to the value dvbAsiOut of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbAsiOut E_IETFInterfaces_InterfaceType = 67 - // IETFInterfaces_InterfaceType_dvbRccDownstream corresponds to the value dvbRccDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccDownstream E_IETFInterfaces_InterfaceType = 68 - // IETFInterfaces_InterfaceType_dvbRccMacLayer corresponds to the value dvbRccMacLayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccMacLayer E_IETFInterfaces_InterfaceType = 69 - // IETFInterfaces_InterfaceType_dvbRccUpstream corresponds to the value dvbRccUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRccUpstream E_IETFInterfaces_InterfaceType = 70 - // IETFInterfaces_InterfaceType_dvbRcsMacLayer corresponds to the value dvbRcsMacLayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRcsMacLayer E_IETFInterfaces_InterfaceType = 71 - // IETFInterfaces_InterfaceType_dvbRcsTdma corresponds to the value dvbRcsTdma of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbRcsTdma E_IETFInterfaces_InterfaceType = 72 - // IETFInterfaces_InterfaceType_dvbTdm corresponds to the value dvbTdm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_dvbTdm E_IETFInterfaces_InterfaceType = 73 - // IETFInterfaces_InterfaceType_e1 corresponds to the value e1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_e1 E_IETFInterfaces_InterfaceType = 74 - // IETFInterfaces_InterfaceType_econet corresponds to the value econet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_econet E_IETFInterfaces_InterfaceType = 75 - // IETFInterfaces_InterfaceType_eon corresponds to the value eon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_eon E_IETFInterfaces_InterfaceType = 76 - // IETFInterfaces_InterfaceType_eplrs corresponds to the value eplrs of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_eplrs E_IETFInterfaces_InterfaceType = 77 - // IETFInterfaces_InterfaceType_escon corresponds to the value escon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_escon E_IETFInterfaces_InterfaceType = 78 - // IETFInterfaces_InterfaceType_ethernet3Mbit corresponds to the value ethernet3Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ethernet3Mbit E_IETFInterfaces_InterfaceType = 79 - // IETFInterfaces_InterfaceType_ethernetCsmacd corresponds to the value ethernetCsmacd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ethernetCsmacd E_IETFInterfaces_InterfaceType = 80 - // IETFInterfaces_InterfaceType_fast corresponds to the value fast of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fast E_IETFInterfaces_InterfaceType = 81 - // IETFInterfaces_InterfaceType_fastEther corresponds to the value fastEther of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fastEther E_IETFInterfaces_InterfaceType = 82 - // IETFInterfaces_InterfaceType_fastEtherFX corresponds to the value fastEtherFX of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fastEtherFX E_IETFInterfaces_InterfaceType = 83 - // IETFInterfaces_InterfaceType_fcipLink corresponds to the value fcipLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fcipLink E_IETFInterfaces_InterfaceType = 84 - // IETFInterfaces_InterfaceType_fddi corresponds to the value fddi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fddi E_IETFInterfaces_InterfaceType = 85 - // IETFInterfaces_InterfaceType_fibreChannel corresponds to the value fibreChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_fibreChannel E_IETFInterfaces_InterfaceType = 86 - // IETFInterfaces_InterfaceType_frDlciEndPt corresponds to the value frDlciEndPt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frDlciEndPt E_IETFInterfaces_InterfaceType = 87 - // IETFInterfaces_InterfaceType_frForward corresponds to the value frForward of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frForward E_IETFInterfaces_InterfaceType = 88 - // IETFInterfaces_InterfaceType_frameRelay corresponds to the value frameRelay of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelay E_IETFInterfaces_InterfaceType = 89 - // IETFInterfaces_InterfaceType_frameRelayInterconnect corresponds to the value frameRelayInterconnect of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayInterconnect E_IETFInterfaces_InterfaceType = 90 - // IETFInterfaces_InterfaceType_frameRelayMPI corresponds to the value frameRelayMPI of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayMPI E_IETFInterfaces_InterfaceType = 91 - // IETFInterfaces_InterfaceType_frameRelayService corresponds to the value frameRelayService of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frameRelayService E_IETFInterfaces_InterfaceType = 92 - // IETFInterfaces_InterfaceType_frf16MfrBundle corresponds to the value frf16MfrBundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_frf16MfrBundle E_IETFInterfaces_InterfaceType = 93 - // IETFInterfaces_InterfaceType_g703at2mb corresponds to the value g703at2mb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g703at2mb E_IETFInterfaces_InterfaceType = 94 - // IETFInterfaces_InterfaceType_g703at64k corresponds to the value g703at64k of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g703at64k E_IETFInterfaces_InterfaceType = 95 - // IETFInterfaces_InterfaceType_g9981 corresponds to the value g9981 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9981 E_IETFInterfaces_InterfaceType = 96 - // IETFInterfaces_InterfaceType_g9982 corresponds to the value g9982 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9982 E_IETFInterfaces_InterfaceType = 97 - // IETFInterfaces_InterfaceType_g9983 corresponds to the value g9983 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_g9983 E_IETFInterfaces_InterfaceType = 98 - // IETFInterfaces_InterfaceType_gfp corresponds to the value gfp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gfp E_IETFInterfaces_InterfaceType = 99 - // IETFInterfaces_InterfaceType_gigabitEthernet corresponds to the value gigabitEthernet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gigabitEthernet E_IETFInterfaces_InterfaceType = 100 - // IETFInterfaces_InterfaceType_gpon corresponds to the value gpon of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gpon E_IETFInterfaces_InterfaceType = 101 - // IETFInterfaces_InterfaceType_gr303IDT corresponds to the value gr303IDT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gr303IDT E_IETFInterfaces_InterfaceType = 102 - // IETFInterfaces_InterfaceType_gr303RDT corresponds to the value gr303RDT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gr303RDT E_IETFInterfaces_InterfaceType = 103 - // IETFInterfaces_InterfaceType_gtp corresponds to the value gtp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_gtp E_IETFInterfaces_InterfaceType = 104 - // IETFInterfaces_InterfaceType_h323Gatekeeper corresponds to the value h323Gatekeeper of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_h323Gatekeeper E_IETFInterfaces_InterfaceType = 105 - // IETFInterfaces_InterfaceType_h323Proxy corresponds to the value h323Proxy of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_h323Proxy E_IETFInterfaces_InterfaceType = 106 - // IETFInterfaces_InterfaceType_hdh1822 corresponds to the value hdh1822 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdh1822 E_IETFInterfaces_InterfaceType = 107 - // IETFInterfaces_InterfaceType_hdlc corresponds to the value hdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdlc E_IETFInterfaces_InterfaceType = 108 - // IETFInterfaces_InterfaceType_hdsl2 corresponds to the value hdsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hdsl2 E_IETFInterfaces_InterfaceType = 109 - // IETFInterfaces_InterfaceType_hiperlan2 corresponds to the value hiperlan2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hiperlan2 E_IETFInterfaces_InterfaceType = 110 - // IETFInterfaces_InterfaceType_hippi corresponds to the value hippi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hippi E_IETFInterfaces_InterfaceType = 111 - // IETFInterfaces_InterfaceType_hippiInterface corresponds to the value hippiInterface of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hippiInterface E_IETFInterfaces_InterfaceType = 112 - // IETFInterfaces_InterfaceType_homepna corresponds to the value homepna of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_homepna E_IETFInterfaces_InterfaceType = 113 - // IETFInterfaces_InterfaceType_hostPad corresponds to the value hostPad of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hostPad E_IETFInterfaces_InterfaceType = 114 - // IETFInterfaces_InterfaceType_hssi corresponds to the value hssi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hssi E_IETFInterfaces_InterfaceType = 115 - // IETFInterfaces_InterfaceType_hyperchannel corresponds to the value hyperchannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_hyperchannel E_IETFInterfaces_InterfaceType = 116 - // IETFInterfaces_InterfaceType_iana_interface_type corresponds to the value iana_interface_type of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iana_interface_type E_IETFInterfaces_InterfaceType = 117 - // IETFInterfaces_InterfaceType_ibm370parChan corresponds to the value ibm370parChan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ibm370parChan E_IETFInterfaces_InterfaceType = 118 - // IETFInterfaces_InterfaceType_idsl corresponds to the value idsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_idsl E_IETFInterfaces_InterfaceType = 119 - // IETFInterfaces_InterfaceType_ieee1394 corresponds to the value ieee1394 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee1394 E_IETFInterfaces_InterfaceType = 120 - // IETFInterfaces_InterfaceType_ieee80211 corresponds to the value ieee80211 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80211 E_IETFInterfaces_InterfaceType = 121 - // IETFInterfaces_InterfaceType_ieee80212 corresponds to the value ieee80212 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80212 E_IETFInterfaces_InterfaceType = 122 - // IETFInterfaces_InterfaceType_ieee802154 corresponds to the value ieee802154 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee802154 E_IETFInterfaces_InterfaceType = 123 - // IETFInterfaces_InterfaceType_ieee80216WMAN corresponds to the value ieee80216WMAN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee80216WMAN E_IETFInterfaces_InterfaceType = 124 - // IETFInterfaces_InterfaceType_ieee8023adLag corresponds to the value ieee8023adLag of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ieee8023adLag E_IETFInterfaces_InterfaceType = 125 - // IETFInterfaces_InterfaceType_if_gsn corresponds to the value if_gsn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_if_gsn E_IETFInterfaces_InterfaceType = 126 - // IETFInterfaces_InterfaceType_ifPwType corresponds to the value ifPwType of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ifPwType E_IETFInterfaces_InterfaceType = 127 - // IETFInterfaces_InterfaceType_ifVfiType corresponds to the value ifVfiType of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ifVfiType E_IETFInterfaces_InterfaceType = 128 - // IETFInterfaces_InterfaceType_ilan corresponds to the value ilan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ilan E_IETFInterfaces_InterfaceType = 129 - // IETFInterfaces_InterfaceType_imt corresponds to the value imt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_imt E_IETFInterfaces_InterfaceType = 130 - // IETFInterfaces_InterfaceType_infiniband corresponds to the value infiniband of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_infiniband E_IETFInterfaces_InterfaceType = 131 - // IETFInterfaces_InterfaceType_interleave corresponds to the value interleave of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_interleave E_IETFInterfaces_InterfaceType = 132 - // IETFInterfaces_InterfaceType_ip corresponds to the value ip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ip E_IETFInterfaces_InterfaceType = 133 - // IETFInterfaces_InterfaceType_ipForward corresponds to the value ipForward of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipForward E_IETFInterfaces_InterfaceType = 134 - // IETFInterfaces_InterfaceType_ipOverAtm corresponds to the value ipOverAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverAtm E_IETFInterfaces_InterfaceType = 135 - // IETFInterfaces_InterfaceType_ipOverCdlc corresponds to the value ipOverCdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverCdlc E_IETFInterfaces_InterfaceType = 136 - // IETFInterfaces_InterfaceType_ipOverClaw corresponds to the value ipOverClaw of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipOverClaw E_IETFInterfaces_InterfaceType = 137 - // IETFInterfaces_InterfaceType_ipSwitch corresponds to the value ipSwitch of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ipSwitch E_IETFInterfaces_InterfaceType = 138 - // IETFInterfaces_InterfaceType_isdn corresponds to the value isdn of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdn E_IETFInterfaces_InterfaceType = 139 - // IETFInterfaces_InterfaceType_isdns corresponds to the value isdns of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdns E_IETFInterfaces_InterfaceType = 140 - // IETFInterfaces_InterfaceType_isdnu corresponds to the value isdnu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isdnu E_IETFInterfaces_InterfaceType = 141 - // IETFInterfaces_InterfaceType_iso88022llc corresponds to the value iso88022llc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88022llc E_IETFInterfaces_InterfaceType = 142 - // IETFInterfaces_InterfaceType_iso88023Csmacd corresponds to the value iso88023Csmacd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88023Csmacd E_IETFInterfaces_InterfaceType = 143 - // IETFInterfaces_InterfaceType_iso88024TokenBus corresponds to the value iso88024TokenBus of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88024TokenBus E_IETFInterfaces_InterfaceType = 144 - // IETFInterfaces_InterfaceType_iso88025CRFPInt corresponds to the value iso88025CRFPInt of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025CRFPInt E_IETFInterfaces_InterfaceType = 145 - // IETFInterfaces_InterfaceType_iso88025Dtr corresponds to the value iso88025Dtr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025Dtr E_IETFInterfaces_InterfaceType = 146 - // IETFInterfaces_InterfaceType_iso88025Fiber corresponds to the value iso88025Fiber of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025Fiber E_IETFInterfaces_InterfaceType = 147 - // IETFInterfaces_InterfaceType_iso88025TokenRing corresponds to the value iso88025TokenRing of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88025TokenRing E_IETFInterfaces_InterfaceType = 148 - // IETFInterfaces_InterfaceType_iso88026Man corresponds to the value iso88026Man of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_iso88026Man E_IETFInterfaces_InterfaceType = 149 - // IETFInterfaces_InterfaceType_isup corresponds to the value isup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_isup E_IETFInterfaces_InterfaceType = 150 - // IETFInterfaces_InterfaceType_l2vlan corresponds to the value l2vlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l2vlan E_IETFInterfaces_InterfaceType = 151 - // IETFInterfaces_InterfaceType_l3ipvlan corresponds to the value l3ipvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l3ipvlan E_IETFInterfaces_InterfaceType = 152 - // IETFInterfaces_InterfaceType_l3ipxvlan corresponds to the value l3ipxvlan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_l3ipxvlan E_IETFInterfaces_InterfaceType = 153 - // IETFInterfaces_InterfaceType_lapb corresponds to the value lapb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapb E_IETFInterfaces_InterfaceType = 154 - // IETFInterfaces_InterfaceType_lapd corresponds to the value lapd of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapd E_IETFInterfaces_InterfaceType = 155 - // IETFInterfaces_InterfaceType_lapf corresponds to the value lapf of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lapf E_IETFInterfaces_InterfaceType = 156 - // IETFInterfaces_InterfaceType_linegroup corresponds to the value linegroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_linegroup E_IETFInterfaces_InterfaceType = 157 - // IETFInterfaces_InterfaceType_lmp corresponds to the value lmp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_lmp E_IETFInterfaces_InterfaceType = 158 - // IETFInterfaces_InterfaceType_localTalk corresponds to the value localTalk of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_localTalk E_IETFInterfaces_InterfaceType = 159 - // IETFInterfaces_InterfaceType_macSecControlledIF corresponds to the value macSecControlledIF of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_macSecControlledIF E_IETFInterfaces_InterfaceType = 160 - // IETFInterfaces_InterfaceType_macSecUncontrolledIF corresponds to the value macSecUncontrolledIF of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_macSecUncontrolledIF E_IETFInterfaces_InterfaceType = 161 - // IETFInterfaces_InterfaceType_mediaMailOverIp corresponds to the value mediaMailOverIp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mediaMailOverIp E_IETFInterfaces_InterfaceType = 162 - // IETFInterfaces_InterfaceType_mfSigLink corresponds to the value mfSigLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mfSigLink E_IETFInterfaces_InterfaceType = 163 - // IETFInterfaces_InterfaceType_miox25 corresponds to the value miox25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_miox25 E_IETFInterfaces_InterfaceType = 164 - // IETFInterfaces_InterfaceType_mocaVersion1 corresponds to the value mocaVersion1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mocaVersion1 E_IETFInterfaces_InterfaceType = 165 - // IETFInterfaces_InterfaceType_modem corresponds to the value modem of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_modem E_IETFInterfaces_InterfaceType = 166 - // IETFInterfaces_InterfaceType_mpc corresponds to the value mpc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpc E_IETFInterfaces_InterfaceType = 167 - // IETFInterfaces_InterfaceType_mpegTransport corresponds to the value mpegTransport of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpegTransport E_IETFInterfaces_InterfaceType = 168 - // IETFInterfaces_InterfaceType_mpls corresponds to the value mpls of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mpls E_IETFInterfaces_InterfaceType = 169 - // IETFInterfaces_InterfaceType_mplsTunnel corresponds to the value mplsTunnel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mplsTunnel E_IETFInterfaces_InterfaceType = 170 - // IETFInterfaces_InterfaceType_msdsl corresponds to the value msdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_msdsl E_IETFInterfaces_InterfaceType = 171 - // IETFInterfaces_InterfaceType_mvl corresponds to the value mvl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_mvl E_IETFInterfaces_InterfaceType = 172 - // IETFInterfaces_InterfaceType_myrinet corresponds to the value myrinet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_myrinet E_IETFInterfaces_InterfaceType = 173 - // IETFInterfaces_InterfaceType_nfas corresponds to the value nfas of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_nfas E_IETFInterfaces_InterfaceType = 174 - // IETFInterfaces_InterfaceType_nsip corresponds to the value nsip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_nsip E_IETFInterfaces_InterfaceType = 175 - // IETFInterfaces_InterfaceType_opticalChannel corresponds to the value opticalChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalChannel E_IETFInterfaces_InterfaceType = 176 - // IETFInterfaces_InterfaceType_opticalChannelGroup corresponds to the value opticalChannelGroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalChannelGroup E_IETFInterfaces_InterfaceType = 177 - // IETFInterfaces_InterfaceType_opticalTransport corresponds to the value opticalTransport of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_opticalTransport E_IETFInterfaces_InterfaceType = 178 - // IETFInterfaces_InterfaceType_other corresponds to the value other of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_other E_IETFInterfaces_InterfaceType = 179 - // IETFInterfaces_InterfaceType_otnOdu corresponds to the value otnOdu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_otnOdu E_IETFInterfaces_InterfaceType = 180 - // IETFInterfaces_InterfaceType_otnOtu corresponds to the value otnOtu of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_otnOtu E_IETFInterfaces_InterfaceType = 181 - // IETFInterfaces_InterfaceType_para corresponds to the value para of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_para E_IETFInterfaces_InterfaceType = 182 - // IETFInterfaces_InterfaceType_pdnEtherLoop1 corresponds to the value pdnEtherLoop1 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pdnEtherLoop1 E_IETFInterfaces_InterfaceType = 183 - // IETFInterfaces_InterfaceType_pdnEtherLoop2 corresponds to the value pdnEtherLoop2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pdnEtherLoop2 E_IETFInterfaces_InterfaceType = 184 - // IETFInterfaces_InterfaceType_pip corresponds to the value pip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pip E_IETFInterfaces_InterfaceType = 185 - // IETFInterfaces_InterfaceType_plc corresponds to the value plc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_plc E_IETFInterfaces_InterfaceType = 186 - // IETFInterfaces_InterfaceType_pon155 corresponds to the value pon155 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pon155 E_IETFInterfaces_InterfaceType = 187 - // IETFInterfaces_InterfaceType_pon622 corresponds to the value pon622 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pon622 E_IETFInterfaces_InterfaceType = 188 - // IETFInterfaces_InterfaceType_pos corresponds to the value pos of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pos E_IETFInterfaces_InterfaceType = 189 - // IETFInterfaces_InterfaceType_ppp corresponds to the value ppp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ppp E_IETFInterfaces_InterfaceType = 190 - // IETFInterfaces_InterfaceType_pppMultilinkBundle corresponds to the value pppMultilinkBundle of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_pppMultilinkBundle E_IETFInterfaces_InterfaceType = 191 - // IETFInterfaces_InterfaceType_primaryISDN corresponds to the value primaryISDN of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_primaryISDN E_IETFInterfaces_InterfaceType = 192 - // IETFInterfaces_InterfaceType_propAtm corresponds to the value propAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propAtm E_IETFInterfaces_InterfaceType = 193 - // IETFInterfaces_InterfaceType_propBWAp2Mp corresponds to the value propBWAp2Mp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propBWAp2Mp E_IETFInterfaces_InterfaceType = 194 - // IETFInterfaces_InterfaceType_propCnls corresponds to the value propCnls of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propCnls E_IETFInterfaces_InterfaceType = 195 - // IETFInterfaces_InterfaceType_propDocsWirelessDownstream corresponds to the value propDocsWirelessDownstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessDownstream E_IETFInterfaces_InterfaceType = 196 - // IETFInterfaces_InterfaceType_propDocsWirelessMaclayer corresponds to the value propDocsWirelessMaclayer of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessMaclayer E_IETFInterfaces_InterfaceType = 197 - // IETFInterfaces_InterfaceType_propDocsWirelessUpstream corresponds to the value propDocsWirelessUpstream of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propDocsWirelessUpstream E_IETFInterfaces_InterfaceType = 198 - // IETFInterfaces_InterfaceType_propMultiplexor corresponds to the value propMultiplexor of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propMultiplexor E_IETFInterfaces_InterfaceType = 199 - // IETFInterfaces_InterfaceType_propPointToPointSerial corresponds to the value propPointToPointSerial of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propPointToPointSerial E_IETFInterfaces_InterfaceType = 200 - // IETFInterfaces_InterfaceType_propVirtual corresponds to the value propVirtual of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propVirtual E_IETFInterfaces_InterfaceType = 201 - // IETFInterfaces_InterfaceType_propWirelessP2P corresponds to the value propWirelessP2P of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_propWirelessP2P E_IETFInterfaces_InterfaceType = 202 - // IETFInterfaces_InterfaceType_proteon10Mbit corresponds to the value proteon10Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_proteon10Mbit E_IETFInterfaces_InterfaceType = 203 - // IETFInterfaces_InterfaceType_proteon80Mbit corresponds to the value proteon80Mbit of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_proteon80Mbit E_IETFInterfaces_InterfaceType = 204 - // IETFInterfaces_InterfaceType_q2931 corresponds to the value q2931 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_q2931 E_IETFInterfaces_InterfaceType = 205 - // IETFInterfaces_InterfaceType_qam corresponds to the value qam of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_qam E_IETFInterfaces_InterfaceType = 206 - // IETFInterfaces_InterfaceType_qllc corresponds to the value qllc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_qllc E_IETFInterfaces_InterfaceType = 207 - // IETFInterfaces_InterfaceType_radioMAC corresponds to the value radioMAC of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_radioMAC E_IETFInterfaces_InterfaceType = 208 - // IETFInterfaces_InterfaceType_radsl corresponds to the value radsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_radsl E_IETFInterfaces_InterfaceType = 209 - // IETFInterfaces_InterfaceType_reachDSL corresponds to the value reachDSL of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_reachDSL E_IETFInterfaces_InterfaceType = 210 - // IETFInterfaces_InterfaceType_regular1822 corresponds to the value regular1822 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_regular1822 E_IETFInterfaces_InterfaceType = 211 - // IETFInterfaces_InterfaceType_rfc1483 corresponds to the value rfc1483 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rfc1483 E_IETFInterfaces_InterfaceType = 212 - // IETFInterfaces_InterfaceType_rfc877x25 corresponds to the value rfc877x25 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rfc877x25 E_IETFInterfaces_InterfaceType = 213 - // IETFInterfaces_InterfaceType_rpr corresponds to the value rpr of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rpr E_IETFInterfaces_InterfaceType = 214 - // IETFInterfaces_InterfaceType_rs232 corresponds to the value rs232 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rs232 E_IETFInterfaces_InterfaceType = 215 - // IETFInterfaces_InterfaceType_rsrb corresponds to the value rsrb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_rsrb E_IETFInterfaces_InterfaceType = 216 - // IETFInterfaces_InterfaceType_sdlc corresponds to the value sdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sdlc E_IETFInterfaces_InterfaceType = 217 - // IETFInterfaces_InterfaceType_sdsl corresponds to the value sdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sdsl E_IETFInterfaces_InterfaceType = 218 - // IETFInterfaces_InterfaceType_shdsl corresponds to the value shdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_shdsl E_IETFInterfaces_InterfaceType = 219 - // IETFInterfaces_InterfaceType_sip corresponds to the value sip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sip E_IETFInterfaces_InterfaceType = 220 - // IETFInterfaces_InterfaceType_sipSig corresponds to the value sipSig of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sipSig E_IETFInterfaces_InterfaceType = 221 - // IETFInterfaces_InterfaceType_sipTg corresponds to the value sipTg of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sipTg E_IETFInterfaces_InterfaceType = 222 - // IETFInterfaces_InterfaceType_sixToFour corresponds to the value sixToFour of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sixToFour E_IETFInterfaces_InterfaceType = 223 - // IETFInterfaces_InterfaceType_slip corresponds to the value slip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_slip E_IETFInterfaces_InterfaceType = 224 - // IETFInterfaces_InterfaceType_smdsDxi corresponds to the value smdsDxi of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_smdsDxi E_IETFInterfaces_InterfaceType = 225 - // IETFInterfaces_InterfaceType_smdsIcip corresponds to the value smdsIcip of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_smdsIcip E_IETFInterfaces_InterfaceType = 226 - // IETFInterfaces_InterfaceType_softwareLoopback corresponds to the value softwareLoopback of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_softwareLoopback E_IETFInterfaces_InterfaceType = 227 - // IETFInterfaces_InterfaceType_sonet corresponds to the value sonet of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonet E_IETFInterfaces_InterfaceType = 228 - // IETFInterfaces_InterfaceType_sonetOverheadChannel corresponds to the value sonetOverheadChannel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetOverheadChannel E_IETFInterfaces_InterfaceType = 229 - // IETFInterfaces_InterfaceType_sonetPath corresponds to the value sonetPath of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetPath E_IETFInterfaces_InterfaceType = 230 - // IETFInterfaces_InterfaceType_sonetVT corresponds to the value sonetVT of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_sonetVT E_IETFInterfaces_InterfaceType = 231 - // IETFInterfaces_InterfaceType_srp corresponds to the value srp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_srp E_IETFInterfaces_InterfaceType = 232 - // IETFInterfaces_InterfaceType_ss7SigLink corresponds to the value ss7SigLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ss7SigLink E_IETFInterfaces_InterfaceType = 233 - // IETFInterfaces_InterfaceType_stackToStack corresponds to the value stackToStack of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_stackToStack E_IETFInterfaces_InterfaceType = 234 - // IETFInterfaces_InterfaceType_starLan corresponds to the value starLan of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_starLan E_IETFInterfaces_InterfaceType = 235 - // IETFInterfaces_InterfaceType_tdlc corresponds to the value tdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tdlc E_IETFInterfaces_InterfaceType = 236 - // IETFInterfaces_InterfaceType_teLink corresponds to the value teLink of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_teLink E_IETFInterfaces_InterfaceType = 237 - // IETFInterfaces_InterfaceType_termPad corresponds to the value termPad of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_termPad E_IETFInterfaces_InterfaceType = 238 - // IETFInterfaces_InterfaceType_tr008 corresponds to the value tr008 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tr008 E_IETFInterfaces_InterfaceType = 239 - // IETFInterfaces_InterfaceType_transpHdlc corresponds to the value transpHdlc of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_transpHdlc E_IETFInterfaces_InterfaceType = 240 - // IETFInterfaces_InterfaceType_tunnel corresponds to the value tunnel of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_tunnel E_IETFInterfaces_InterfaceType = 241 - // IETFInterfaces_InterfaceType_ultra corresponds to the value ultra of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_ultra E_IETFInterfaces_InterfaceType = 242 - // IETFInterfaces_InterfaceType_usb corresponds to the value usb of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_usb E_IETFInterfaces_InterfaceType = 243 - // IETFInterfaces_InterfaceType_v11 corresponds to the value v11 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v11 E_IETFInterfaces_InterfaceType = 244 - // IETFInterfaces_InterfaceType_v35 corresponds to the value v35 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v35 E_IETFInterfaces_InterfaceType = 245 - // IETFInterfaces_InterfaceType_v36 corresponds to the value v36 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v36 E_IETFInterfaces_InterfaceType = 246 - // IETFInterfaces_InterfaceType_v37 corresponds to the value v37 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_v37 E_IETFInterfaces_InterfaceType = 247 - // IETFInterfaces_InterfaceType_vdsl corresponds to the value vdsl of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vdsl E_IETFInterfaces_InterfaceType = 248 - // IETFInterfaces_InterfaceType_vdsl2 corresponds to the value vdsl2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vdsl2 E_IETFInterfaces_InterfaceType = 249 - // IETFInterfaces_InterfaceType_virtualIpAddress corresponds to the value virtualIpAddress of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_virtualIpAddress E_IETFInterfaces_InterfaceType = 250 - // IETFInterfaces_InterfaceType_virtualTg corresponds to the value virtualTg of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_virtualTg E_IETFInterfaces_InterfaceType = 251 - // IETFInterfaces_InterfaceType_vmwareNicTeam corresponds to the value vmwareNicTeam of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vmwareNicTeam E_IETFInterfaces_InterfaceType = 252 - // IETFInterfaces_InterfaceType_vmwareVirtualNic corresponds to the value vmwareVirtualNic of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_vmwareVirtualNic E_IETFInterfaces_InterfaceType = 253 - // IETFInterfaces_InterfaceType_voiceDID corresponds to the value voiceDID of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceDID E_IETFInterfaces_InterfaceType = 254 - // IETFInterfaces_InterfaceType_voiceEBS corresponds to the value voiceEBS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEBS E_IETFInterfaces_InterfaceType = 255 - // IETFInterfaces_InterfaceType_voiceEM corresponds to the value voiceEM of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEM E_IETFInterfaces_InterfaceType = 256 - // IETFInterfaces_InterfaceType_voiceEMFGD corresponds to the value voiceEMFGD of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEMFGD E_IETFInterfaces_InterfaceType = 257 - // IETFInterfaces_InterfaceType_voiceEncap corresponds to the value voiceEncap of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceEncap E_IETFInterfaces_InterfaceType = 258 - // IETFInterfaces_InterfaceType_voiceFGDEANA corresponds to the value voiceFGDEANA of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFGDEANA E_IETFInterfaces_InterfaceType = 259 - // IETFInterfaces_InterfaceType_voiceFGDOS corresponds to the value voiceFGDOS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFGDOS E_IETFInterfaces_InterfaceType = 260 - // IETFInterfaces_InterfaceType_voiceFXO corresponds to the value voiceFXO of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFXO E_IETFInterfaces_InterfaceType = 261 - // IETFInterfaces_InterfaceType_voiceFXS corresponds to the value voiceFXS of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceFXS E_IETFInterfaces_InterfaceType = 262 - // IETFInterfaces_InterfaceType_voiceOverAtm corresponds to the value voiceOverAtm of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverAtm E_IETFInterfaces_InterfaceType = 263 - // IETFInterfaces_InterfaceType_voiceOverCable corresponds to the value voiceOverCable of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverCable E_IETFInterfaces_InterfaceType = 264 - // IETFInterfaces_InterfaceType_voiceOverFrameRelay corresponds to the value voiceOverFrameRelay of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverFrameRelay E_IETFInterfaces_InterfaceType = 265 - // IETFInterfaces_InterfaceType_voiceOverIp corresponds to the value voiceOverIp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_voiceOverIp E_IETFInterfaces_InterfaceType = 266 - // IETFInterfaces_InterfaceType_wwanPP corresponds to the value wwanPP of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_wwanPP E_IETFInterfaces_InterfaceType = 267 - // IETFInterfaces_InterfaceType_wwanPP2 corresponds to the value wwanPP2 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_wwanPP2 E_IETFInterfaces_InterfaceType = 268 - // IETFInterfaces_InterfaceType_x213 corresponds to the value x213 of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x213 E_IETFInterfaces_InterfaceType = 269 - // IETFInterfaces_InterfaceType_x25huntGroup corresponds to the value x25huntGroup of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25huntGroup E_IETFInterfaces_InterfaceType = 270 - // IETFInterfaces_InterfaceType_x25mlp corresponds to the value x25mlp of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25mlp E_IETFInterfaces_InterfaceType = 271 - // IETFInterfaces_InterfaceType_x25ple corresponds to the value x25ple of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x25ple E_IETFInterfaces_InterfaceType = 272 - // IETFInterfaces_InterfaceType_x86Laps corresponds to the value x86Laps of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_x86Laps E_IETFInterfaces_InterfaceType = 273 -) - -// E_Interface_AdminStatus is a derived int64 type which is used to represent -// the enumerated node Interface_AdminStatus. An additional value named -// Interface_AdminStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Interface_AdminStatus int64 - -// IsYANGGoEnum ensures that Interface_AdminStatus implements the yang.GoEnum -// interface. This ensures that Interface_AdminStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_Interface_AdminStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Interface_AdminStatus. -func (E_Interface_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Interface_AdminStatus. -func (e E_Interface_AdminStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_Interface_AdminStatus") -} - -const ( - // Interface_AdminStatus_UNSET corresponds to the value UNSET of Interface_AdminStatus - Interface_AdminStatus_UNSET E_Interface_AdminStatus = 0 - // Interface_AdminStatus_UP corresponds to the value UP of Interface_AdminStatus - Interface_AdminStatus_UP E_Interface_AdminStatus = 1 - // Interface_AdminStatus_DOWN corresponds to the value DOWN of Interface_AdminStatus - Interface_AdminStatus_DOWN E_Interface_AdminStatus = 2 - // Interface_AdminStatus_TESTING corresponds to the value TESTING of Interface_AdminStatus - Interface_AdminStatus_TESTING E_Interface_AdminStatus = 3 -) - -// E_Interface_OperStatus is a derived int64 type which is used to represent -// the enumerated node Interface_OperStatus. An additional value named -// Interface_OperStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Interface_OperStatus int64 - -// IsYANGGoEnum ensures that Interface_OperStatus implements the yang.GoEnum -// interface. This ensures that Interface_OperStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_Interface_OperStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Interface_OperStatus. -func (E_Interface_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Interface_OperStatus. -func (e E_Interface_OperStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_Interface_OperStatus") -} - -const ( - // Interface_OperStatus_UNSET corresponds to the value UNSET of Interface_OperStatus - Interface_OperStatus_UNSET E_Interface_OperStatus = 0 - // Interface_OperStatus_UP corresponds to the value UP of Interface_OperStatus - Interface_OperStatus_UP E_Interface_OperStatus = 1 - // Interface_OperStatus_DOWN corresponds to the value DOWN of Interface_OperStatus - Interface_OperStatus_DOWN E_Interface_OperStatus = 2 - // Interface_OperStatus_TESTING corresponds to the value TESTING of Interface_OperStatus - Interface_OperStatus_TESTING E_Interface_OperStatus = 3 - // Interface_OperStatus_UNKNOWN corresponds to the value UNKNOWN of Interface_OperStatus - Interface_OperStatus_UNKNOWN E_Interface_OperStatus = 4 - // Interface_OperStatus_DORMANT corresponds to the value DORMANT of Interface_OperStatus - Interface_OperStatus_DORMANT E_Interface_OperStatus = 5 - // Interface_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of Interface_OperStatus - Interface_OperStatus_NOT_PRESENT E_Interface_OperStatus = 6 - // Interface_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of Interface_OperStatus - Interface_OperStatus_LOWER_LAYER_DOWN E_Interface_OperStatus = 7 -) - -// E_Neighbor_NeighborState is a derived int64 type which is used to represent -// the enumerated node Neighbor_NeighborState. An additional value named -// Neighbor_NeighborState_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Neighbor_NeighborState int64 - -// IsYANGGoEnum ensures that Neighbor_NeighborState implements the yang.GoEnum -// interface. This ensures that Neighbor_NeighborState can be identified as a -// mapped type for a YANG enumeration. -func (E_Neighbor_NeighborState) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Neighbor_NeighborState. -func (E_Neighbor_NeighborState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Neighbor_NeighborState. -func (e E_Neighbor_NeighborState) String() string { - return ygot.EnumLogString(e, int64(e), "E_Neighbor_NeighborState") -} - -const ( - // Neighbor_NeighborState_UNSET corresponds to the value UNSET of Neighbor_NeighborState - Neighbor_NeighborState_UNSET E_Neighbor_NeighborState = 0 - // Neighbor_NeighborState_INCOMPLETE corresponds to the value INCOMPLETE of Neighbor_NeighborState - Neighbor_NeighborState_INCOMPLETE E_Neighbor_NeighborState = 1 - // Neighbor_NeighborState_REACHABLE corresponds to the value REACHABLE of Neighbor_NeighborState - Neighbor_NeighborState_REACHABLE E_Neighbor_NeighborState = 2 - // Neighbor_NeighborState_STALE corresponds to the value STALE of Neighbor_NeighborState - Neighbor_NeighborState_STALE E_Neighbor_NeighborState = 3 - // Neighbor_NeighborState_DELAY corresponds to the value DELAY of Neighbor_NeighborState - Neighbor_NeighborState_DELAY E_Neighbor_NeighborState = 4 - // Neighbor_NeighborState_PROBE corresponds to the value PROBE of Neighbor_NeighborState - Neighbor_NeighborState_PROBE E_Neighbor_NeighborState = 5 -) - -// E_OpenconfigIfAggregate_AggregationType is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfAggregate_AggregationType. An additional value named -// OpenconfigIfAggregate_AggregationType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfAggregate_AggregationType int64 - -// IsYANGGoEnum ensures that OpenconfigIfAggregate_AggregationType implements the yang.GoEnum -// interface. This ensures that OpenconfigIfAggregate_AggregationType can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfAggregate_AggregationType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfAggregate_AggregationType. -func (E_OpenconfigIfAggregate_AggregationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfAggregate_AggregationType. -func (e E_OpenconfigIfAggregate_AggregationType) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfAggregate_AggregationType") -} - -const ( - // OpenconfigIfAggregate_AggregationType_UNSET corresponds to the value UNSET of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_UNSET E_OpenconfigIfAggregate_AggregationType = 0 - // OpenconfigIfAggregate_AggregationType_LACP corresponds to the value LACP of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_LACP E_OpenconfigIfAggregate_AggregationType = 1 - // OpenconfigIfAggregate_AggregationType_STATIC corresponds to the value STATIC of OpenconfigIfAggregate_AggregationType - OpenconfigIfAggregate_AggregationType_STATIC E_OpenconfigIfAggregate_AggregationType = 2 -) - -// E_OpenconfigIfEthernet_ETHERNET_SPEED is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfEthernet_ETHERNET_SPEED. An additional value named -// OpenconfigIfEthernet_ETHERNET_SPEED_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfEthernet_ETHERNET_SPEED int64 - -// IsYANGGoEnum ensures that OpenconfigIfEthernet_ETHERNET_SPEED implements the yang.GoEnum -// interface. This ensures that OpenconfigIfEthernet_ETHERNET_SPEED can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfEthernet_ETHERNET_SPEED) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfEthernet_ETHERNET_SPEED. -func (E_OpenconfigIfEthernet_ETHERNET_SPEED) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfEthernet_ETHERNET_SPEED. -func (e E_OpenconfigIfEthernet_ETHERNET_SPEED) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfEthernet_ETHERNET_SPEED") -} - -const ( - // OpenconfigIfEthernet_ETHERNET_SPEED_UNSET corresponds to the value UNSET of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_UNSET E_OpenconfigIfEthernet_ETHERNET_SPEED = 0 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB corresponds to the value SPEED_100GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 1 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB corresponds to the value SPEED_100MB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 2 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB corresponds to the value SPEED_10GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 3 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB corresponds to the value SPEED_10MB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 4 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB corresponds to the value SPEED_1GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 5 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB corresponds to the value SPEED_25GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 6 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB corresponds to the value SPEED_40GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 7 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB corresponds to the value SPEED_50GB of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 8 - // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN corresponds to the value SPEED_UNKNOWN of OpenconfigIfEthernet_ETHERNET_SPEED - OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN E_OpenconfigIfEthernet_ETHERNET_SPEED = 9 -) - -// E_OpenconfigIfIp_IpAddressOrigin is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfIp_IpAddressOrigin. An additional value named -// OpenconfigIfIp_IpAddressOrigin_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfIp_IpAddressOrigin int64 - -// IsYANGGoEnum ensures that OpenconfigIfIp_IpAddressOrigin implements the yang.GoEnum -// interface. This ensures that OpenconfigIfIp_IpAddressOrigin can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfIp_IpAddressOrigin) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfIp_IpAddressOrigin. -func (E_OpenconfigIfIp_IpAddressOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfIp_IpAddressOrigin. -func (e E_OpenconfigIfIp_IpAddressOrigin) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_IpAddressOrigin") -} - -const ( - // OpenconfigIfIp_IpAddressOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_UNSET E_OpenconfigIfIp_IpAddressOrigin = 0 - // OpenconfigIfIp_IpAddressOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_OTHER E_OpenconfigIfIp_IpAddressOrigin = 1 - // OpenconfigIfIp_IpAddressOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_STATIC E_OpenconfigIfIp_IpAddressOrigin = 2 - // OpenconfigIfIp_IpAddressOrigin_DHCP corresponds to the value DHCP of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_DHCP E_OpenconfigIfIp_IpAddressOrigin = 3 - // OpenconfigIfIp_IpAddressOrigin_LINK_LAYER corresponds to the value LINK_LAYER of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_LINK_LAYER E_OpenconfigIfIp_IpAddressOrigin = 4 - // OpenconfigIfIp_IpAddressOrigin_RANDOM corresponds to the value RANDOM of OpenconfigIfIp_IpAddressOrigin - OpenconfigIfIp_IpAddressOrigin_RANDOM E_OpenconfigIfIp_IpAddressOrigin = 5 -) - -// E_OpenconfigIfIp_NeighborOrigin is a derived int64 type which is used to represent -// the enumerated node OpenconfigIfIp_NeighborOrigin. An additional value named -// OpenconfigIfIp_NeighborOrigin_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigIfIp_NeighborOrigin int64 - -// IsYANGGoEnum ensures that OpenconfigIfIp_NeighborOrigin implements the yang.GoEnum -// interface. This ensures that OpenconfigIfIp_NeighborOrigin can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigIfIp_NeighborOrigin) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigIfIp_NeighborOrigin. -func (E_OpenconfigIfIp_NeighborOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigIfIp_NeighborOrigin. -func (e E_OpenconfigIfIp_NeighborOrigin) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_NeighborOrigin") -} - -const ( - // OpenconfigIfIp_NeighborOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_UNSET E_OpenconfigIfIp_NeighborOrigin = 0 - // OpenconfigIfIp_NeighborOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_OTHER E_OpenconfigIfIp_NeighborOrigin = 1 - // OpenconfigIfIp_NeighborOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_STATIC E_OpenconfigIfIp_NeighborOrigin = 2 - // OpenconfigIfIp_NeighborOrigin_DYNAMIC corresponds to the value DYNAMIC of OpenconfigIfIp_NeighborOrigin - OpenconfigIfIp_NeighborOrigin_DYNAMIC E_OpenconfigIfIp_NeighborOrigin = 3 -) - -// E_OpenconfigVlanTypes_TPID_TYPES is a derived int64 type which is used to represent -// the enumerated node OpenconfigVlanTypes_TPID_TYPES. An additional value named -// OpenconfigVlanTypes_TPID_TYPES_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigVlanTypes_TPID_TYPES int64 - -// IsYANGGoEnum ensures that OpenconfigVlanTypes_TPID_TYPES implements the yang.GoEnum -// interface. This ensures that OpenconfigVlanTypes_TPID_TYPES can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigVlanTypes_TPID_TYPES) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigVlanTypes_TPID_TYPES. -func (E_OpenconfigVlanTypes_TPID_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigVlanTypes_TPID_TYPES. -func (e E_OpenconfigVlanTypes_TPID_TYPES) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlanTypes_TPID_TYPES") -} - -const ( - // OpenconfigVlanTypes_TPID_TYPES_UNSET corresponds to the value UNSET of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_UNSET E_OpenconfigVlanTypes_TPID_TYPES = 0 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 corresponds to the value TPID_0X9200 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 E_OpenconfigVlanTypes_TPID_TYPES = 1 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 corresponds to the value TPID_0x8100 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 E_OpenconfigVlanTypes_TPID_TYPES = 2 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 corresponds to the value TPID_0x8A88 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 E_OpenconfigVlanTypes_TPID_TYPES = 3 - // OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 corresponds to the value TPID_0x9100 of OpenconfigVlanTypes_TPID_TYPES - OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 E_OpenconfigVlanTypes_TPID_TYPES = 4 -) - -// E_OpenconfigVlanTypes_VlanModeType is a derived int64 type which is used to represent -// the enumerated node OpenconfigVlanTypes_VlanModeType. An additional value named -// OpenconfigVlanTypes_VlanModeType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigVlanTypes_VlanModeType int64 - -// IsYANGGoEnum ensures that OpenconfigVlanTypes_VlanModeType implements the yang.GoEnum -// interface. This ensures that OpenconfigVlanTypes_VlanModeType can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigVlanTypes_VlanModeType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigVlanTypes_VlanModeType. -func (E_OpenconfigVlanTypes_VlanModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigVlanTypes_VlanModeType. -func (e E_OpenconfigVlanTypes_VlanModeType) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlanTypes_VlanModeType") -} - -const ( - // OpenconfigVlanTypes_VlanModeType_UNSET corresponds to the value UNSET of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_UNSET E_OpenconfigVlanTypes_VlanModeType = 0 - // OpenconfigVlanTypes_VlanModeType_ACCESS corresponds to the value ACCESS of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_ACCESS E_OpenconfigVlanTypes_VlanModeType = 1 - // OpenconfigVlanTypes_VlanModeType_TRUNK corresponds to the value TRUNK of OpenconfigVlanTypes_VlanModeType - OpenconfigVlanTypes_VlanModeType_TRUNK E_OpenconfigVlanTypes_VlanModeType = 2 -) - -// E_Vlan_Status is a derived int64 type which is used to represent -// the enumerated node Vlan_Status. An additional value named -// Vlan_Status_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_Vlan_Status int64 - -// IsYANGGoEnum ensures that Vlan_Status implements the yang.GoEnum -// interface. This ensures that Vlan_Status can be identified as a -// mapped type for a YANG enumeration. -func (E_Vlan_Status) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with Vlan_Status. -func (E_Vlan_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_Vlan_Status. -func (e E_Vlan_Status) String() string { - return ygot.EnumLogString(e, int64(e), "E_Vlan_Status") -} - -const ( - // Vlan_Status_UNSET corresponds to the value UNSET of Vlan_Status - Vlan_Status_UNSET E_Vlan_Status = 0 - // Vlan_Status_ACTIVE corresponds to the value ACTIVE of Vlan_Status - Vlan_Status_ACTIVE E_Vlan_Status = 1 - // Vlan_Status_SUSPENDED corresponds to the value SUSPENDED of Vlan_Status - Vlan_Status_SUSPENDED E_Vlan_Status = 2 -) - -// ΛEnum is a map, keyed by the name of the type defined for each enum in the -// generated Go code, which provides a mapping between the constant int64 value -// of each value of the enumeration, and the string that is used to represent it -// in the YANG schema. The map is named ΛEnum in order to avoid clash with any -// valid YANG identifier. -var ΛEnum = map[string]map[int64]ygot.EnumDefinition{ - "E_Address_Status": { - 1: {Name: "PREFERRED"}, - 2: {Name: "DEPRECATED"}, - 3: {Name: "INVALID"}, - 4: {Name: "INACCESSIBLE"}, - 5: {Name: "UNKNOWN"}, - 6: {Name: "TENTATIVE"}, - 7: {Name: "DUPLICATE"}, - 8: {Name: "OPTIMISTIC"}, - }, - "E_Ethernet_DuplexMode": { - 1: {Name: "FULL"}, - 2: {Name: "HALF"}, - }, - "E_Ethernet_NegotiatedDuplexMode": { - 1: {Name: "FULL"}, - 2: {Name: "HALF"}, - }, - "E_IETFInterfaces_InterfaceType": { - 1: {Name: "a12MppSwitch", DefiningModule: "iana-if-type"}, - 2: {Name: "aal2", DefiningModule: "iana-if-type"}, - 3: {Name: "aal5", DefiningModule: "iana-if-type"}, - 4: {Name: "actelisMetaLOOP", DefiningModule: "iana-if-type"}, - 5: {Name: "adsl", DefiningModule: "iana-if-type"}, - 6: {Name: "adsl2", DefiningModule: "iana-if-type"}, - 7: {Name: "adsl2plus", DefiningModule: "iana-if-type"}, - 8: {Name: "aflane8023", DefiningModule: "iana-if-type"}, - 9: {Name: "aflane8025", DefiningModule: "iana-if-type"}, - 10: {Name: "aluELP", DefiningModule: "iana-if-type"}, - 11: {Name: "aluEpon", DefiningModule: "iana-if-type"}, - 12: {Name: "aluEponLogicalLink", DefiningModule: "iana-if-type"}, - 13: {Name: "aluEponOnu", DefiningModule: "iana-if-type"}, - 14: {Name: "aluEponPhysicalUni", DefiningModule: "iana-if-type"}, - 15: {Name: "aluGponOnu", DefiningModule: "iana-if-type"}, - 16: {Name: "aluGponPhysicalUni", DefiningModule: "iana-if-type"}, - 17: {Name: "arap", DefiningModule: "iana-if-type"}, - 18: {Name: "arcnet", DefiningModule: "iana-if-type"}, - 19: {Name: "arcnetPlus", DefiningModule: "iana-if-type"}, - 20: {Name: "async", DefiningModule: "iana-if-type"}, - 21: {Name: "atm", DefiningModule: "iana-if-type"}, - 22: {Name: "atmDxi", DefiningModule: "iana-if-type"}, - 23: {Name: "atmFuni", DefiningModule: "iana-if-type"}, - 24: {Name: "atmIma", DefiningModule: "iana-if-type"}, - 25: {Name: "atmLogical", DefiningModule: "iana-if-type"}, - 26: {Name: "atmRadio", DefiningModule: "iana-if-type"}, - 27: {Name: "atmSubInterface", DefiningModule: "iana-if-type"}, - 28: {Name: "atmVciEndPt", DefiningModule: "iana-if-type"}, - 29: {Name: "atmVirtual", DefiningModule: "iana-if-type"}, - 30: {Name: "atmbond", DefiningModule: "iana-if-type"}, - 31: {Name: "aviciOpticalEther", DefiningModule: "iana-if-type"}, - 32: {Name: "basicISDN", DefiningModule: "iana-if-type"}, - 33: {Name: "bgppolicyaccounting", DefiningModule: "iana-if-type"}, - 34: {Name: "bits", DefiningModule: "iana-if-type"}, - 35: {Name: "bridge", DefiningModule: "iana-if-type"}, - 36: {Name: "bsc", DefiningModule: "iana-if-type"}, - 37: {Name: "cableDownstreamRfPort", DefiningModule: "iana-if-type"}, - 38: {Name: "capwapDot11Bss", DefiningModule: "iana-if-type"}, - 39: {Name: "capwapDot11Profile", DefiningModule: "iana-if-type"}, - 40: {Name: "capwapWtpVirtualRadio", DefiningModule: "iana-if-type"}, - 41: {Name: "cblVectaStar", DefiningModule: "iana-if-type"}, - 42: {Name: "cctEmul", DefiningModule: "iana-if-type"}, - 43: {Name: "ces", DefiningModule: "iana-if-type"}, - 44: {Name: "channel", DefiningModule: "iana-if-type"}, - 45: {Name: "ciscoISLvlan", DefiningModule: "iana-if-type"}, - 46: {Name: "cnr", DefiningModule: "iana-if-type"}, - 47: {Name: "coffee", DefiningModule: "iana-if-type"}, - 48: {Name: "compositeLink", DefiningModule: "iana-if-type"}, - 49: {Name: "dcn", DefiningModule: "iana-if-type"}, - 50: {Name: "ddnX25", DefiningModule: "iana-if-type"}, - 51: {Name: "digitalPowerline", DefiningModule: "iana-if-type"}, - 52: {Name: "digitalWrapperOverheadChannel", DefiningModule: "iana-if-type"}, - 53: {Name: "dlsw", DefiningModule: "iana-if-type"}, - 54: {Name: "docsCableDownstream", DefiningModule: "iana-if-type"}, - 55: {Name: "docsCableMCmtsDownstream", DefiningModule: "iana-if-type"}, - 56: {Name: "docsCableMaclayer", DefiningModule: "iana-if-type"}, - 57: {Name: "docsCableUpstream", DefiningModule: "iana-if-type"}, - 58: {Name: "docsCableUpstreamChannel", DefiningModule: "iana-if-type"}, - 59: {Name: "docsCableUpstreamRfPort", DefiningModule: "iana-if-type"}, - 60: {Name: "ds0", DefiningModule: "iana-if-type"}, - 61: {Name: "ds0Bundle", DefiningModule: "iana-if-type"}, - 62: {Name: "ds1", DefiningModule: "iana-if-type"}, - 63: {Name: "ds1FDL", DefiningModule: "iana-if-type"}, - 64: {Name: "ds3", DefiningModule: "iana-if-type"}, - 65: {Name: "dtm", DefiningModule: "iana-if-type"}, - 66: {Name: "dvbAsiIn", DefiningModule: "iana-if-type"}, - 67: {Name: "dvbAsiOut", DefiningModule: "iana-if-type"}, - 68: {Name: "dvbRccDownstream", DefiningModule: "iana-if-type"}, - 69: {Name: "dvbRccMacLayer", DefiningModule: "iana-if-type"}, - 70: {Name: "dvbRccUpstream", DefiningModule: "iana-if-type"}, - 71: {Name: "dvbRcsMacLayer", DefiningModule: "iana-if-type"}, - 72: {Name: "dvbRcsTdma", DefiningModule: "iana-if-type"}, - 73: {Name: "dvbTdm", DefiningModule: "iana-if-type"}, - 74: {Name: "e1", DefiningModule: "iana-if-type"}, - 75: {Name: "econet", DefiningModule: "iana-if-type"}, - 76: {Name: "eon", DefiningModule: "iana-if-type"}, - 77: {Name: "eplrs", DefiningModule: "iana-if-type"}, - 78: {Name: "escon", DefiningModule: "iana-if-type"}, - 79: {Name: "ethernet3Mbit", DefiningModule: "iana-if-type"}, - 80: {Name: "ethernetCsmacd", DefiningModule: "iana-if-type"}, - 81: {Name: "fast", DefiningModule: "iana-if-type"}, - 82: {Name: "fastEther", DefiningModule: "iana-if-type"}, - 83: {Name: "fastEtherFX", DefiningModule: "iana-if-type"}, - 84: {Name: "fcipLink", DefiningModule: "iana-if-type"}, - 85: {Name: "fddi", DefiningModule: "iana-if-type"}, - 86: {Name: "fibreChannel", DefiningModule: "iana-if-type"}, - 87: {Name: "frDlciEndPt", DefiningModule: "iana-if-type"}, - 88: {Name: "frForward", DefiningModule: "iana-if-type"}, - 89: {Name: "frameRelay", DefiningModule: "iana-if-type"}, - 90: {Name: "frameRelayInterconnect", DefiningModule: "iana-if-type"}, - 91: {Name: "frameRelayMPI", DefiningModule: "iana-if-type"}, - 92: {Name: "frameRelayService", DefiningModule: "iana-if-type"}, - 93: {Name: "frf16MfrBundle", DefiningModule: "iana-if-type"}, - 94: {Name: "g703at2mb", DefiningModule: "iana-if-type"}, - 95: {Name: "g703at64k", DefiningModule: "iana-if-type"}, - 96: {Name: "g9981", DefiningModule: "iana-if-type"}, - 97: {Name: "g9982", DefiningModule: "iana-if-type"}, - 98: {Name: "g9983", DefiningModule: "iana-if-type"}, - 99: {Name: "gfp", DefiningModule: "iana-if-type"}, - 100: {Name: "gigabitEthernet", DefiningModule: "iana-if-type"}, - 101: {Name: "gpon", DefiningModule: "iana-if-type"}, - 102: {Name: "gr303IDT", DefiningModule: "iana-if-type"}, - 103: {Name: "gr303RDT", DefiningModule: "iana-if-type"}, - 104: {Name: "gtp", DefiningModule: "iana-if-type"}, - 105: {Name: "h323Gatekeeper", DefiningModule: "iana-if-type"}, - 106: {Name: "h323Proxy", DefiningModule: "iana-if-type"}, - 107: {Name: "hdh1822", DefiningModule: "iana-if-type"}, - 108: {Name: "hdlc", DefiningModule: "iana-if-type"}, - 109: {Name: "hdsl2", DefiningModule: "iana-if-type"}, - 110: {Name: "hiperlan2", DefiningModule: "iana-if-type"}, - 111: {Name: "hippi", DefiningModule: "iana-if-type"}, - 112: {Name: "hippiInterface", DefiningModule: "iana-if-type"}, - 113: {Name: "homepna", DefiningModule: "iana-if-type"}, - 114: {Name: "hostPad", DefiningModule: "iana-if-type"}, - 115: {Name: "hssi", DefiningModule: "iana-if-type"}, - 116: {Name: "hyperchannel", DefiningModule: "iana-if-type"}, - 117: {Name: "iana-interface-type", DefiningModule: "iana-if-type"}, - 118: {Name: "ibm370parChan", DefiningModule: "iana-if-type"}, - 119: {Name: "idsl", DefiningModule: "iana-if-type"}, - 120: {Name: "ieee1394", DefiningModule: "iana-if-type"}, - 121: {Name: "ieee80211", DefiningModule: "iana-if-type"}, - 122: {Name: "ieee80212", DefiningModule: "iana-if-type"}, - 123: {Name: "ieee802154", DefiningModule: "iana-if-type"}, - 124: {Name: "ieee80216WMAN", DefiningModule: "iana-if-type"}, - 125: {Name: "ieee8023adLag", DefiningModule: "iana-if-type"}, - 126: {Name: "if-gsn", DefiningModule: "iana-if-type"}, - 127: {Name: "ifPwType", DefiningModule: "iana-if-type"}, - 128: {Name: "ifVfiType", DefiningModule: "iana-if-type"}, - 129: {Name: "ilan", DefiningModule: "iana-if-type"}, - 130: {Name: "imt", DefiningModule: "iana-if-type"}, - 131: {Name: "infiniband", DefiningModule: "iana-if-type"}, - 132: {Name: "interleave", DefiningModule: "iana-if-type"}, - 133: {Name: "ip", DefiningModule: "iana-if-type"}, - 134: {Name: "ipForward", DefiningModule: "iana-if-type"}, - 135: {Name: "ipOverAtm", DefiningModule: "iana-if-type"}, - 136: {Name: "ipOverCdlc", DefiningModule: "iana-if-type"}, - 137: {Name: "ipOverClaw", DefiningModule: "iana-if-type"}, - 138: {Name: "ipSwitch", DefiningModule: "iana-if-type"}, - 139: {Name: "isdn", DefiningModule: "iana-if-type"}, - 140: {Name: "isdns", DefiningModule: "iana-if-type"}, - 141: {Name: "isdnu", DefiningModule: "iana-if-type"}, - 142: {Name: "iso88022llc", DefiningModule: "iana-if-type"}, - 143: {Name: "iso88023Csmacd", DefiningModule: "iana-if-type"}, - 144: {Name: "iso88024TokenBus", DefiningModule: "iana-if-type"}, - 145: {Name: "iso88025CRFPInt", DefiningModule: "iana-if-type"}, - 146: {Name: "iso88025Dtr", DefiningModule: "iana-if-type"}, - 147: {Name: "iso88025Fiber", DefiningModule: "iana-if-type"}, - 148: {Name: "iso88025TokenRing", DefiningModule: "iana-if-type"}, - 149: {Name: "iso88026Man", DefiningModule: "iana-if-type"}, - 150: {Name: "isup", DefiningModule: "iana-if-type"}, - 151: {Name: "l2vlan", DefiningModule: "iana-if-type"}, - 152: {Name: "l3ipvlan", DefiningModule: "iana-if-type"}, - 153: {Name: "l3ipxvlan", DefiningModule: "iana-if-type"}, - 154: {Name: "lapb", DefiningModule: "iana-if-type"}, - 155: {Name: "lapd", DefiningModule: "iana-if-type"}, - 156: {Name: "lapf", DefiningModule: "iana-if-type"}, - 157: {Name: "linegroup", DefiningModule: "iana-if-type"}, - 158: {Name: "lmp", DefiningModule: "iana-if-type"}, - 159: {Name: "localTalk", DefiningModule: "iana-if-type"}, - 160: {Name: "macSecControlledIF", DefiningModule: "iana-if-type"}, - 161: {Name: "macSecUncontrolledIF", DefiningModule: "iana-if-type"}, - 162: {Name: "mediaMailOverIp", DefiningModule: "iana-if-type"}, - 163: {Name: "mfSigLink", DefiningModule: "iana-if-type"}, - 164: {Name: "miox25", DefiningModule: "iana-if-type"}, - 165: {Name: "mocaVersion1", DefiningModule: "iana-if-type"}, - 166: {Name: "modem", DefiningModule: "iana-if-type"}, - 167: {Name: "mpc", DefiningModule: "iana-if-type"}, - 168: {Name: "mpegTransport", DefiningModule: "iana-if-type"}, - 169: {Name: "mpls", DefiningModule: "iana-if-type"}, - 170: {Name: "mplsTunnel", DefiningModule: "iana-if-type"}, - 171: {Name: "msdsl", DefiningModule: "iana-if-type"}, - 172: {Name: "mvl", DefiningModule: "iana-if-type"}, - 173: {Name: "myrinet", DefiningModule: "iana-if-type"}, - 174: {Name: "nfas", DefiningModule: "iana-if-type"}, - 175: {Name: "nsip", DefiningModule: "iana-if-type"}, - 176: {Name: "opticalChannel", DefiningModule: "iana-if-type"}, - 177: {Name: "opticalChannelGroup", DefiningModule: "iana-if-type"}, - 178: {Name: "opticalTransport", DefiningModule: "iana-if-type"}, - 179: {Name: "other", DefiningModule: "iana-if-type"}, - 180: {Name: "otnOdu", DefiningModule: "iana-if-type"}, - 181: {Name: "otnOtu", DefiningModule: "iana-if-type"}, - 182: {Name: "para", DefiningModule: "iana-if-type"}, - 183: {Name: "pdnEtherLoop1", DefiningModule: "iana-if-type"}, - 184: {Name: "pdnEtherLoop2", DefiningModule: "iana-if-type"}, - 185: {Name: "pip", DefiningModule: "iana-if-type"}, - 186: {Name: "plc", DefiningModule: "iana-if-type"}, - 187: {Name: "pon155", DefiningModule: "iana-if-type"}, - 188: {Name: "pon622", DefiningModule: "iana-if-type"}, - 189: {Name: "pos", DefiningModule: "iana-if-type"}, - 190: {Name: "ppp", DefiningModule: "iana-if-type"}, - 191: {Name: "pppMultilinkBundle", DefiningModule: "iana-if-type"}, - 192: {Name: "primaryISDN", DefiningModule: "iana-if-type"}, - 193: {Name: "propAtm", DefiningModule: "iana-if-type"}, - 194: {Name: "propBWAp2Mp", DefiningModule: "iana-if-type"}, - 195: {Name: "propCnls", DefiningModule: "iana-if-type"}, - 196: {Name: "propDocsWirelessDownstream", DefiningModule: "iana-if-type"}, - 197: {Name: "propDocsWirelessMaclayer", DefiningModule: "iana-if-type"}, - 198: {Name: "propDocsWirelessUpstream", DefiningModule: "iana-if-type"}, - 199: {Name: "propMultiplexor", DefiningModule: "iana-if-type"}, - 200: {Name: "propPointToPointSerial", DefiningModule: "iana-if-type"}, - 201: {Name: "propVirtual", DefiningModule: "iana-if-type"}, - 202: {Name: "propWirelessP2P", DefiningModule: "iana-if-type"}, - 203: {Name: "proteon10Mbit", DefiningModule: "iana-if-type"}, - 204: {Name: "proteon80Mbit", DefiningModule: "iana-if-type"}, - 205: {Name: "q2931", DefiningModule: "iana-if-type"}, - 206: {Name: "qam", DefiningModule: "iana-if-type"}, - 207: {Name: "qllc", DefiningModule: "iana-if-type"}, - 208: {Name: "radioMAC", DefiningModule: "iana-if-type"}, - 209: {Name: "radsl", DefiningModule: "iana-if-type"}, - 210: {Name: "reachDSL", DefiningModule: "iana-if-type"}, - 211: {Name: "regular1822", DefiningModule: "iana-if-type"}, - 212: {Name: "rfc1483", DefiningModule: "iana-if-type"}, - 213: {Name: "rfc877x25", DefiningModule: "iana-if-type"}, - 214: {Name: "rpr", DefiningModule: "iana-if-type"}, - 215: {Name: "rs232", DefiningModule: "iana-if-type"}, - 216: {Name: "rsrb", DefiningModule: "iana-if-type"}, - 217: {Name: "sdlc", DefiningModule: "iana-if-type"}, - 218: {Name: "sdsl", DefiningModule: "iana-if-type"}, - 219: {Name: "shdsl", DefiningModule: "iana-if-type"}, - 220: {Name: "sip", DefiningModule: "iana-if-type"}, - 221: {Name: "sipSig", DefiningModule: "iana-if-type"}, - 222: {Name: "sipTg", DefiningModule: "iana-if-type"}, - 223: {Name: "sixToFour", DefiningModule: "iana-if-type"}, - 224: {Name: "slip", DefiningModule: "iana-if-type"}, - 225: {Name: "smdsDxi", DefiningModule: "iana-if-type"}, - 226: {Name: "smdsIcip", DefiningModule: "iana-if-type"}, - 227: {Name: "softwareLoopback", DefiningModule: "iana-if-type"}, - 228: {Name: "sonet", DefiningModule: "iana-if-type"}, - 229: {Name: "sonetOverheadChannel", DefiningModule: "iana-if-type"}, - 230: {Name: "sonetPath", DefiningModule: "iana-if-type"}, - 231: {Name: "sonetVT", DefiningModule: "iana-if-type"}, - 232: {Name: "srp", DefiningModule: "iana-if-type"}, - 233: {Name: "ss7SigLink", DefiningModule: "iana-if-type"}, - 234: {Name: "stackToStack", DefiningModule: "iana-if-type"}, - 235: {Name: "starLan", DefiningModule: "iana-if-type"}, - 236: {Name: "tdlc", DefiningModule: "iana-if-type"}, - 237: {Name: "teLink", DefiningModule: "iana-if-type"}, - 238: {Name: "termPad", DefiningModule: "iana-if-type"}, - 239: {Name: "tr008", DefiningModule: "iana-if-type"}, - 240: {Name: "transpHdlc", DefiningModule: "iana-if-type"}, - 241: {Name: "tunnel", DefiningModule: "iana-if-type"}, - 242: {Name: "ultra", DefiningModule: "iana-if-type"}, - 243: {Name: "usb", DefiningModule: "iana-if-type"}, - 244: {Name: "v11", DefiningModule: "iana-if-type"}, - 245: {Name: "v35", DefiningModule: "iana-if-type"}, - 246: {Name: "v36", DefiningModule: "iana-if-type"}, - 247: {Name: "v37", DefiningModule: "iana-if-type"}, - 248: {Name: "vdsl", DefiningModule: "iana-if-type"}, - 249: {Name: "vdsl2", DefiningModule: "iana-if-type"}, - 250: {Name: "virtualIpAddress", DefiningModule: "iana-if-type"}, - 251: {Name: "virtualTg", DefiningModule: "iana-if-type"}, - 252: {Name: "vmwareNicTeam", DefiningModule: "iana-if-type"}, - 253: {Name: "vmwareVirtualNic", DefiningModule: "iana-if-type"}, - 254: {Name: "voiceDID", DefiningModule: "iana-if-type"}, - 255: {Name: "voiceEBS", DefiningModule: "iana-if-type"}, - 256: {Name: "voiceEM", DefiningModule: "iana-if-type"}, - 257: {Name: "voiceEMFGD", DefiningModule: "iana-if-type"}, - 258: {Name: "voiceEncap", DefiningModule: "iana-if-type"}, - 259: {Name: "voiceFGDEANA", DefiningModule: "iana-if-type"}, - 260: {Name: "voiceFGDOS", DefiningModule: "iana-if-type"}, - 261: {Name: "voiceFXO", DefiningModule: "iana-if-type"}, - 262: {Name: "voiceFXS", DefiningModule: "iana-if-type"}, - 263: {Name: "voiceOverAtm", DefiningModule: "iana-if-type"}, - 264: {Name: "voiceOverCable", DefiningModule: "iana-if-type"}, - 265: {Name: "voiceOverFrameRelay", DefiningModule: "iana-if-type"}, - 266: {Name: "voiceOverIp", DefiningModule: "iana-if-type"}, - 267: {Name: "wwanPP", DefiningModule: "iana-if-type"}, - 268: {Name: "wwanPP2", DefiningModule: "iana-if-type"}, - 269: {Name: "x213", DefiningModule: "iana-if-type"}, - 270: {Name: "x25huntGroup", DefiningModule: "iana-if-type"}, - 271: {Name: "x25mlp", DefiningModule: "iana-if-type"}, - 272: {Name: "x25ple", DefiningModule: "iana-if-type"}, - 273: {Name: "x86Laps", DefiningModule: "iana-if-type"}, - }, - "E_Interface_AdminStatus": { - 1: {Name: "UP"}, - 2: {Name: "DOWN"}, - 3: {Name: "TESTING"}, - }, - "E_Interface_OperStatus": { - 1: {Name: "UP"}, - 2: {Name: "DOWN"}, - 3: {Name: "TESTING"}, - 4: {Name: "UNKNOWN"}, - 5: {Name: "DORMANT"}, - 6: {Name: "NOT_PRESENT"}, - 7: {Name: "LOWER_LAYER_DOWN"}, - }, - "E_Neighbor_NeighborState": { - 1: {Name: "INCOMPLETE"}, - 2: {Name: "REACHABLE"}, - 3: {Name: "STALE"}, - 4: {Name: "DELAY"}, - 5: {Name: "PROBE"}, - }, - "E_OpenconfigIfAggregate_AggregationType": { - 1: {Name: "LACP"}, - 2: {Name: "STATIC"}, - }, - "E_OpenconfigIfEthernet_ETHERNET_SPEED": { - 1: {Name: "SPEED_100GB", DefiningModule: "openconfig-if-ethernet"}, - 2: {Name: "SPEED_100MB", DefiningModule: "openconfig-if-ethernet"}, - 3: {Name: "SPEED_10GB", DefiningModule: "openconfig-if-ethernet"}, - 4: {Name: "SPEED_10MB", DefiningModule: "openconfig-if-ethernet"}, - 5: {Name: "SPEED_1GB", DefiningModule: "openconfig-if-ethernet"}, - 6: {Name: "SPEED_25GB", DefiningModule: "openconfig-if-ethernet"}, - 7: {Name: "SPEED_40GB", DefiningModule: "openconfig-if-ethernet"}, - 8: {Name: "SPEED_50GB", DefiningModule: "openconfig-if-ethernet"}, - 9: {Name: "SPEED_UNKNOWN", DefiningModule: "openconfig-if-ethernet"}, - }, - "E_OpenconfigIfIp_IpAddressOrigin": { - 1: {Name: "OTHER"}, - 2: {Name: "STATIC"}, - 3: {Name: "DHCP"}, - 4: {Name: "LINK_LAYER"}, - 5: {Name: "RANDOM"}, - }, - "E_OpenconfigIfIp_NeighborOrigin": { - 1: {Name: "OTHER"}, - 2: {Name: "STATIC"}, - 3: {Name: "DYNAMIC"}, - }, - "E_OpenconfigVlanTypes_TPID_TYPES": { - 1: {Name: "TPID_0X9200", DefiningModule: "openconfig-vlan-types"}, - 2: {Name: "TPID_0x8100", DefiningModule: "openconfig-vlan-types"}, - 3: {Name: "TPID_0x8A88", DefiningModule: "openconfig-vlan-types"}, - 4: {Name: "TPID_0x9100", DefiningModule: "openconfig-vlan-types"}, - }, - "E_OpenconfigVlanTypes_VlanModeType": { - 1: {Name: "ACCESS"}, - 2: {Name: "TRUNK"}, - }, - "E_Vlan_Status": { - 1: {Name: "ACTIVE"}, - 2: {Name: "SUSPENDED"}, - }, -} - -var ( - // ySchema is a byte slice contain a gzip compressed representation of the - // YANG schema from which the Go code was generated. When uncompressed the - // contents of the byte slice is a JSON document containing an object, keyed - // on the name of the generated struct, and containing the JSON marshalled - // contents of a goyang yang.Entry struct, which defines the schema for the - // fields within the struct. - ySchema = []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x6b, 0x53, 0xdb, 0xc8, - 0xd6, 0x3e, 0x0e, 0xbf, 0xcf, 0xa7, 0x50, 0xb9, 0x6a, 0xd7, 0x86, 0xd9, 0x31, 0xf1, 0x19, 0x70, - 0xd5, 0x5d, 0x53, 0x84, 0x43, 0x86, 0xda, 0x10, 0x5c, 0xc0, 0x64, 0xe6, 0xf7, 0x04, 0xee, 0x54, - 0x5b, 0x6a, 0xd9, 0xfd, 0x44, 0x6a, 0x69, 0xba, 0x5b, 0x1c, 0xee, 0x84, 0xef, 0xfe, 0x2f, 0xc9, - 0xb6, 0x30, 0x18, 0x82, 0x25, 0x75, 0xcb, 0x5e, 0xf6, 0xca, 0x8b, 0xc4, 0x10, 0xab, 0x25, 0xf5, - 0x61, 0xad, 0x6b, 0x5d, 0xeb, 0xf4, 0xe3, 0x9d, 0x65, 0x59, 0x56, 0xe5, 0x33, 0xf1, 0x69, 0xa5, - 0x6b, 0x55, 0x1c, 0x7a, 0xc3, 0x6c, 0x5a, 0x79, 0x3f, 0xfa, 0xed, 0x7f, 0x19, 0x77, 0x2a, 0x5d, - 0xab, 0x3e, 0xfe, 0x71, 0x3f, 0xe0, 0x2e, 0x1b, 0x54, 0xba, 0x56, 0x6d, 0xfc, 0x8b, 0x03, 0x26, - 0x2a, 0x5d, 0x6b, 0x34, 0x44, 0xf2, 0x0b, 0xc6, 0x15, 0x15, 0x2e, 0xb1, 0xa9, 0x7c, 0xf2, 0xfb, - 0x27, 0xb7, 0x98, 0xfa, 0xce, 0xfb, 0xa7, 0xdf, 0x78, 0x7a, 0xbb, 0xf4, 0xd7, 0xcf, 0x6f, 0x9b, - 0xfe, 0x47, 0x4f, 0x50, 0x97, 0xdd, 0xcd, 0xdc, 0xe9, 0xc9, 0xdd, 0x02, 0xbb, 0xca, 0xdc, 0x67, - 0x37, 0x4a, 0xbe, 0x70, 0x11, 0x44, 0xc2, 0xa6, 0x2f, 0x5e, 0x3c, 0x7a, 0x18, 0x7a, 0x7f, 0x1b, - 0x88, 0xf8, 0x79, 0x2a, 0xe1, 0xe8, 0x3e, 0xef, 0x5f, 0xfe, 0xe2, 0x1f, 0x44, 0xee, 0x89, 0x41, - 0xe4, 0x53, 0xae, 0x2a, 0x5d, 0x4b, 0x89, 0x88, 0xbe, 0xf2, 0xc5, 0xa9, 0x6f, 0x8d, 0x1f, 0x6b, - 0xe6, 0x7b, 0x0f, 0x4f, 0x7e, 0xf3, 0xf0, 0xec, 0x7d, 0x9f, 0x4f, 0xf7, 0xec, 0xb4, 0xbf, 0xfe, - 0x3a, 0x33, 0xb3, 0xff, 0xda, 0xeb, 0xbc, 0xbc, 0x08, 0x6f, 0x2e, 0xc6, 0x3c, 0x8b, 0x32, 0xf7, - 0xe2, 0xcc, 0xbb, 0x48, 0x99, 0x17, 0x2b, 0xf3, 0xa2, 0x65, 0x59, 0xbc, 0x97, 0x17, 0xf1, 0x95, - 0xc5, 0x7c, 0x73, 0x51, 0xd3, 0x2f, 0x90, 0xc1, 0x40, 0xd0, 0x01, 0x51, 0x2c, 0xe0, 0x6f, 0x4f, - 0xc4, 0x64, 0x66, 0xa7, 0x2f, 0x7a, 0xe3, 0xcd, 0x7e, 0xbd, 0xe0, 0x73, 0x2f, 0x7c, 0x96, 0x0d, - 0xf0, 0xd2, 0x46, 0xf0, 0xc8, 0xe0, 0x8d, 0x27, 0xcd, 0xb2, 0x23, 0x72, 0xef, 0x8c, 0xdc, 0x3b, - 0xe4, 0xb5, 0x9d, 0x12, 0xbf, 0xd7, 0x9b, 0x17, 0x3e, 0xfc, 0xf2, 0x1b, 0x0f, 0x6f, 0xcc, 0xf8, - 0x5b, 0x5b, 0x28, 0xfd, 0xa2, 0x3d, 0x59, 0xc3, 0x39, 0x27, 0x6f, 0xb2, 0x3c, 0xe3, 0xeb, 0xe6, - 0x9c, 0x80, 0xf9, 0x36, 0x54, 0xe6, 0x8d, 0x95, 0x67, 0x83, 0xe5, 0xdf, 0x68, 0x79, 0x37, 0x5c, - 0xe1, 0x8d, 0x57, 0x78, 0x03, 0x16, 0xda, 0x88, 0xf3, 0x6d, 0xc8, 0x39, 0x37, 0x66, 0xe6, 0x0d, - 0x9a, 0x5e, 0xe0, 0x91, 0x41, 0x55, 0xdd, 0x87, 0x39, 0xa6, 0x7d, 0xb2, 0xd0, 0xe9, 0x08, 0x19, - 0x27, 0x6d, 0xbc, 0x79, 0x6b, 0x19, 0x2f, 0xcb, 0xba, 0x89, 0x8b, 0x6c, 0xe6, 0xe2, 0x9b, 0xba, - 0xe8, 0xe6, 0xd6, 0xb6, 0xc9, 0xb5, 0x6d, 0x76, 0x2d, 0x9b, 0x3e, 0xdb, 0xe6, 0xcf, 0x78, 0x08, - 0xd2, 0x27, 0xbc, 0xcc, 0xb3, 0xaf, 0x5f, 0x53, 0xee, 0x79, 0xf6, 0xf8, 0x13, 0x21, 0xdd, 0xca, - 0x71, 0xed, 0x21, 0x8f, 0xfc, 0xf8, 0x0d, 0xcc, 0xce, 0xd3, 0x1e, 0xe7, 0x81, 0x9a, 0x0f, 0xf6, - 0xbc, 0x78, 0xfd, 0xfd, 0x20, 0x50, 0xd5, 0xc0, 0xae, 0xda, 0x81, 0x1f, 0x0a, 0x2a, 0x25, 0x75, - 0xaa, 0x1e, 0x25, 0x6e, 0x8e, 0x07, 0x7f, 0x67, 0xe0, 0x15, 0x2b, 0x3e, 0xe3, 0x55, 0x8f, 0xf1, - 0xef, 0x32, 0xbf, 0x8c, 0x7b, 0x1c, 0x02, 0x85, 0x1c, 0x0a, 0xb9, 0x15, 0x13, 0x72, 0x11, 0xe3, - 0xaa, 0xde, 0x29, 0x20, 0xda, 0x3a, 0x39, 0x2e, 0x3d, 0x27, 0x7c, 0x10, 0xdf, 0xfd, 0x6b, 0xae, - 0x75, 0xc9, 0xb7, 0xbf, 0x92, 0x1b, 0x9f, 0x32, 0x9e, 0x7b, 0x83, 0xa6, 0x83, 0x7c, 0x21, 0x5e, - 0x44, 0xb3, 0x1f, 0xcf, 0x99, 0x71, 0x8e, 0x04, 0xb1, 0x63, 0xb9, 0x7b, 0xc0, 0x06, 0x4c, 0x49, - 0x0d, 0x03, 0x7e, 0x4e, 0xb4, 0xd5, 0x4d, 0xfc, 0x6c, 0x2e, 0xf1, 0x24, 0xcd, 0x3d, 0xda, 0xc3, - 0xfb, 0x02, 0x53, 0x4c, 0xee, 0xf4, 0x4d, 0x71, 0xa7, 0xdd, 0x6e, 0xb6, 0x57, 0x77, 0x9a, 0xdf, - 0x95, 0x73, 0xd5, 0x35, 0x02, 0x08, 0x93, 0x66, 0x57, 0xce, 0x09, 0xa8, 0x48, 0x7b, 0x48, 0x7d, - 0x12, 0x12, 0x35, 0x8c, 0x05, 0xf1, 0x87, 0x20, 0xa4, 0x7c, 0xc4, 0x00, 0x54, 0x1f, 0xb9, 0xdb, - 0x0f, 0x2f, 0x7d, 0xfc, 0x30, 0x85, 0x4c, 0x3f, 0x8c, 0x49, 0x83, 0x77, 0x7a, 0xde, 0x7b, 0x8e, - 0x77, 0xae, 0x48, 0x45, 0x14, 0xcd, 0xce, 0x6e, 0x8c, 0x2e, 0x33, 0x4c, 0x6e, 0x34, 0x90, 0xdc, - 0x40, 0x72, 0xe3, 0x91, 0xdc, 0x90, 0x21, 0xa5, 0x4e, 0x31, 0x76, 0x63, 0x34, 0x04, 0x22, 0x7f, - 0x44, 0xfe, 0x2b, 0x88, 0xfc, 0x9b, 0x8d, 0x02, 0xc8, 0x7f, 0x1b, 0x91, 0x3f, 0x22, 0x7f, 0x53, - 0xc8, 0xbf, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, 0x1b, 0xbb, 0x08, 0xff, 0x4b, 0x86, 0xff, 0x46, - 0x68, 0x38, 0xf4, 0x34, 0xa0, 0x2a, 0x46, 0x55, 0xfc, 0xda, 0x7a, 0x03, 0xf5, 0x34, 0x98, 0x21, - 0xec, 0xa9, 0xdf, 0xa7, 0xa2, 0x00, 0x5b, 0x3f, 0xba, 0x1e, 0xa5, 0x04, 0x4a, 0x89, 0x15, 0x93, - 0x12, 0x7d, 0x22, 0xe9, 0x23, 0x35, 0x54, 0x15, 0xd4, 0x2d, 0x22, 0x27, 0xf2, 0xa0, 0xf7, 0x5e, - 0xca, 0x55, 0xd9, 0x55, 0xe6, 0x76, 0xa7, 0xb8, 0xa9, 0x67, 0xbf, 0x18, 0xff, 0xcc, 0xe3, 0x27, - 0x37, 0x3a, 0xab, 0x27, 0x4c, 0xaa, 0x3d, 0xa5, 0x44, 0xbe, 0x99, 0x3d, 0x65, 0xfc, 0xd0, 0xa3, - 0xf1, 0xbe, 0xc9, 0x09, 0x0c, 0x63, 0xcc, 0x3b, 0x35, 0x42, 0x7d, 0xa7, 0xd5, 0xea, 0x6c, 0xb7, - 0x5a, 0xb5, 0xed, 0xe6, 0x76, 0x6d, 0xb7, 0xdd, 0xae, 0x77, 0xea, 0x39, 0xe0, 0x6b, 0xe5, 0x4c, - 0x38, 0x54, 0x50, 0xe7, 0xe3, 0x7d, 0xa5, 0x6b, 0xf1, 0xc8, 0xf3, 0x8c, 0xce, 0x20, 0xbd, 0x53, - 0x82, 0x54, 0x23, 0x2e, 0x15, 0xe9, 0x7b, 0x39, 0x77, 0xe8, 0xed, 0x90, 0xf2, 0x45, 0x18, 0x75, - 0x4f, 0x25, 0x61, 0x77, 0x02, 0x11, 0xad, 0xff, 0xb1, 0xfe, 0x7d, 0x71, 0xb9, 0x77, 0x79, 0xbc, - 0xff, 0xef, 0x4a, 0x01, 0x7b, 0xa6, 0xa0, 0x94, 0x7c, 0x49, 0x5a, 0x26, 0x13, 0x55, 0xd0, 0xfe, - 0xd0, 0x25, 0x33, 0x7f, 0x21, 0x3b, 0x5f, 0x9c, 0xc9, 0x85, 0xd8, 0x94, 0x07, 0x54, 0xda, 0x82, - 0x85, 0xb9, 0xbd, 0x0b, 0x2f, 0x6e, 0x97, 0xcb, 0x21, 0xb5, 0x24, 0xf3, 0x43, 0x8f, 0x5a, 0x1e, - 0x93, 0xca, 0x0a, 0x5c, 0x6b, 0x84, 0x1a, 0xac, 0x47, 0x89, 0x66, 0x31, 0x69, 0xc5, 0x86, 0xe3, - 0x0d, 0xbd, 0xe2, 0xf1, 0xaa, 0x59, 0x6a, 0x48, 0xad, 0x09, 0x4e, 0xa3, 0xf1, 0xff, 0x4a, 0x45, - 0x14, 0xb3, 0x89, 0xe7, 0xdd, 0x5b, 0x23, 0x0e, 0x3e, 0x12, 0x99, 0x89, 0x42, 0x53, 0x7b, 0xee, - 0xf9, 0xbe, 0x73, 0xa6, 0xa6, 0xf1, 0x7d, 0xf1, 0x91, 0x75, 0x6f, 0xc1, 0x99, 0x6d, 0x68, 0x72, - 0x85, 0x0a, 0x3d, 0xe9, 0x03, 0x5a, 0xfb, 0xf3, 0x60, 0x78, 0x0c, 0xba, 0x41, 0x24, 0x8f, 0x48, - 0xfe, 0xd5, 0xf5, 0xc6, 0xa0, 0x9b, 0xdc, 0xbc, 0x30, 0x52, 0xef, 0xaf, 0x98, 0x21, 0x18, 0x74, - 0xb3, 0x26, 0x7a, 0x78, 0x85, 0x62, 0x57, 0x46, 0x21, 0x21, 0x65, 0x86, 0xae, 0xdc, 0x32, 0x65, - 0x0f, 0xa9, 0x53, 0xbd, 0xf1, 0x08, 0xcf, 0x11, 0xc2, 0xf2, 0xe4, 0xf2, 0xd5, 0xc8, 0xd3, 0xc9, - 0xf0, 0x2a, 0xd6, 0x4a, 0xc5, 0xb2, 0x24, 0x2f, 0x0e, 0x25, 0x98, 0x25, 0x63, 0x4a, 0xd9, 0xcc, - 0x42, 0x67, 0x4a, 0x2d, 0xcb, 0xb9, 0x75, 0x97, 0x06, 0x4b, 0x67, 0xdc, 0xd2, 0xeb, 0x03, 0xa6, - 0xb3, 0x6d, 0xf9, 0x72, 0xd0, 0x74, 0xd6, 0xa3, 0x90, 0x5e, 0x48, 0x6c, 0x9b, 0x4a, 0x99, 0x4d, - 0x92, 0xbf, 0xba, 0x6b, 0xa6, 0x07, 0xcb, 0x39, 0xd7, 0xf9, 0x0c, 0xcf, 0xc2, 0x87, 0x46, 0xc7, - 0xe1, 0xd1, 0x78, 0x88, 0x4c, 0xb2, 0xa7, 0x85, 0x0e, 0x55, 0x69, 0xfc, 0x69, 0xbe, 0x43, 0x56, - 0x10, 0x9e, 0xe6, 0xdc, 0x33, 0xb9, 0x4d, 0xd9, 0x59, 0x93, 0x96, 0x17, 0xe3, 0x16, 0x53, 0x5d, - 0xb3, 0x5b, 0x60, 0x8c, 0xf1, 0xeb, 0x7c, 0x2d, 0xb4, 0x9e, 0x1a, 0x98, 0xd7, 0xc9, 0xa4, 0xc4, - 0x5b, 0xa1, 0xca, 0x1c, 0x1d, 0x94, 0x6b, 0x7e, 0xc3, 0x5f, 0x33, 0x11, 0xa0, 0x7f, 0xba, 0xb4, - 0x12, 0x05, 0xaf, 0x5a, 0xb5, 0xf5, 0xf7, 0x7a, 0xc7, 0xd5, 0x6d, 0xe1, 0x9a, 0xb3, 0x78, 0x35, - 0x12, 0x0d, 0x46, 0x88, 0x87, 0x57, 0x97, 0xac, 0x55, 0xdb, 0x6d, 0xe1, 0xaa, 0x15, 0x52, 0x0c, - 0xfa, 0x47, 0xb9, 0x7e, 0xb7, 0xc0, 0xbd, 0xa7, 0x51, 0x36, 0xff, 0xc3, 0xf8, 0x3f, 0x7a, 0x65, - 0x73, 0x7d, 0x47, 0xc3, 0x58, 0x3d, 0xa2, 0x14, 0x15, 0x5c, 0x9b, 0x78, 0xae, 0x6c, 0xb4, 0x6a, - 0xbb, 0x5f, 0x6b, 0xd5, 0xd6, 0xf5, 0xcf, 0x56, 0xed, 0x6b, 0xad, 0xba, 0x73, 0xfd, 0xb5, 0x56, - 0xdd, 0xbd, 0xfe, 0xf9, 0xb5, 0x5e, 0x6d, 0x8e, 0x3e, 0xfe, 0x68, 0x3e, 0xc4, 0x3f, 0xed, 0x8e, - 0x7f, 0xaa, 0xbf, 0x6f, 0x8c, 0x7f, 0xde, 0xbc, 0xba, 0xda, 0xda, 0x28, 0x70, 0xf9, 0xcf, 0xab, - 0xab, 0xdf, 0x36, 0x2b, 0x8b, 0xde, 0x70, 0xef, 0xca, 0xbd, 0x6f, 0x5e, 0x24, 0xa6, 0x21, 0x0c, - 0x23, 0x1d, 0xab, 0x50, 0x38, 0x86, 0x81, 0xa3, 0xf6, 0x18, 0xb3, 0xe4, 0x07, 0x4e, 0x12, 0x53, - 0xb0, 0xb7, 0xbf, 0x7f, 0x78, 0x71, 0xf1, 0x6f, 0x1d, 0x87, 0x4f, 0xa3, 0xc7, 0xdc, 0xd2, 0x1f, - 0xad, 0x61, 0xcc, 0xea, 0x78, 0xd1, 0xfa, 0x78, 0x7d, 0xa2, 0xdf, 0x2d, 0x01, 0x68, 0xd0, 0x1a, - 0xcc, 0x31, 0xb3, 0xc9, 0xf6, 0x12, 0x0b, 0xde, 0xfa, 0x72, 0xb2, 0xf7, 0xd9, 0x22, 0x52, 0xb2, - 0x01, 0xa7, 0x8e, 0xa5, 0x82, 0x24, 0x2a, 0xe0, 0xd5, 0x5a, 0x78, 0xcb, 0xb2, 0xeb, 0x2c, 0xa3, - 0xf1, 0x1a, 0xc6, 0x37, 0xe1, 0xcc, 0x46, 0x9c, 0x73, 0x31, 0x96, 0x04, 0xd2, 0x3c, 0xac, 0x85, - 0x86, 0x29, 0x98, 0xa7, 0x9d, 0x8e, 0xa3, 0x2d, 0x5f, 0x3b, 0xff, 0x04, 0xe6, 0x98, 0x82, 0x67, - 0xb2, 0xb1, 0x38, 0x63, 0xf8, 0x6c, 0x3c, 0x24, 0x0d, 0x91, 0x34, 0x44, 0xd2, 0x30, 0x0f, 0x3f, - 0x16, 0x1f, 0x9f, 0xbc, 0x59, 0x2f, 0x33, 0x26, 0x58, 0x01, 0xbe, 0x20, 0x67, 0x16, 0x0c, 0x8a, - 0xe5, 0x42, 0x62, 0x99, 0x27, 0x6c, 0x89, 0x26, 0x2f, 0xce, 0xf4, 0x60, 0x28, 0x90, 0x51, 0x20, - 0xa3, 0x40, 0xce, 0xb8, 0x63, 0xd0, 0x8b, 0xf3, 0x9a, 0x96, 0x42, 0x2f, 0xce, 0xbc, 0x0f, 0x86, - 0x5e, 0x9c, 0x27, 0x9b, 0x08, 0xbd, 0x38, 0xe8, 0xc5, 0xd1, 0x49, 0x56, 0x58, 0xe8, 0xc5, 0x41, - 0x2f, 0x0e, 0x7a, 0x71, 0x96, 0x93, 0x63, 0x5b, 0x2f, 0x2f, 0xce, 0xe5, 0xf9, 0x9f, 0x9f, 0xff, - 0x8b, 0x4e, 0x1c, 0x0d, 0x03, 0xff, 0xda, 0x89, 0x33, 0x9e, 0xe7, 0xd5, 0xf7, 0xe1, 0x7c, 0x4e, - 0x94, 0xee, 0xc8, 0x6d, 0xc0, 0xa4, 0x75, 0x43, 0x3c, 0xe6, 0x58, 0x6e, 0x20, 0xe2, 0xa9, 0xe6, - 0xdf, 0xad, 0x64, 0x3e, 0xd0, 0x97, 0x63, 0x76, 0x2f, 0xce, 0xec, 0xc7, 0x8c, 0x8b, 0x82, 0x3e, - 0x1d, 0x24, 0x0f, 0xcb, 0x22, 0x0f, 0x93, 0x1d, 0x98, 0x50, 0x35, 0xb2, 0x38, 0x79, 0x38, 0x3d, - 0x18, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, - 0x88, 0xe4, 0x21, 0x92, 0x87, 0xab, 0x48, 0x1e, 0x26, 0xb2, 0x59, 0x24, 0xa2, 0x10, 0xf9, 0xc3, - 0x5f, 0xf1, 0x87, 0x57, 0x57, 0x5b, 0x05, 0x06, 0xa8, 0xe0, 0x86, 0x43, 0xb6, 0x7a, 0xad, 0xd8, - 0xea, 0x65, 0xdb, 0x70, 0xfa, 0x85, 0xdc, 0xae, 0x86, 0xb1, 0xb4, 0x40, 0x75, 0x03, 0x18, 0xf4, - 0xb1, 0x61, 0x8d, 0x60, 0x7c, 0xa0, 0x93, 0xb3, 0xd3, 0x78, 0x68, 0x8d, 0x1d, 0xde, 0xa5, 0x50, - 0x19, 0xcb, 0x21, 0x05, 0xf4, 0x48, 0x03, 0xcd, 0x98, 0x1b, 0x37, 0xba, 0xf6, 0x8d, 0x7e, 0x75, - 0xf5, 0xdb, 0xcf, 0x02, 0xbb, 0x6d, 0xb3, 0xf0, 0x5e, 0x5f, 0x34, 0xbe, 0xd2, 0xbc, 0xd1, 0xd1, - 0x59, 0x3c, 0xd7, 0xbe, 0x2b, 0x54, 0xbb, 0x7a, 0x9a, 0x31, 0x29, 0x56, 0xc3, 0x7a, 0xda, 0x90, - 0xd7, 0x5e, 0xcb, 0x3a, 0x1d, 0xbc, 0x50, 0x4d, 0xeb, 0xa2, 0x33, 0x8d, 0x6e, 0xf9, 0x7c, 0xf7, - 0x40, 0xb7, 0x3c, 0xba, 0xe5, 0xbb, 0x56, 0x65, 0xcf, 0xf3, 0x82, 0x5b, 0xea, 0x24, 0x2e, 0x60, - 0x69, 0xf9, 0xe4, 0xde, 0xea, 0x53, 0x4b, 0x86, 0xd4, 0x66, 0x2e, 0xa3, 0xcf, 0x7d, 0xc1, 0x57, - 0xfc, 0xd1, 0x19, 0xbc, 0x85, 0x2e, 0xfa, 0x72, 0xd2, 0x2d, 0xf3, 0x2f, 0x10, 0xba, 0xeb, 0x4b, - 0xd4, 0x43, 0xab, 0xe4, 0xae, 0x5f, 0xea, 0x9e, 0xc2, 0x9a, 0xca, 0x93, 0x4e, 0x97, 0xfb, 0xcc, - 0xd4, 0x68, 0x37, 0xfb, 0x2c, 0x65, 0x29, 0xaf, 0x9e, 0xad, 0x01, 0xef, 0x0b, 0xe6, 0xde, 0xfc, - 0x8d, 0x78, 0x67, 0x2c, 0xba, 0xbc, 0xa5, 0x20, 0x1b, 0x58, 0x0a, 0x72, 0xa1, 0x3a, 0x04, 0x4b, - 0x41, 0xce, 0xbb, 0x6b, 0xb0, 0x14, 0xa4, 0x85, 0x71, 0x40, 0x1a, 0x40, 0x19, 0xc6, 0x01, 0x15, - 0x65, 0x0f, 0x31, 0x0e, 0xe8, 0x57, 0xd3, 0x83, 0x71, 0x40, 0x59, 0x07, 0xc5, 0x38, 0x20, 0x03, - 0xd4, 0xc3, 0x34, 0x7d, 0x88, 0x71, 0x40, 0xe5, 0xac, 0x1a, 0xc6, 0x01, 0x61, 0x58, 0x46, 0x8e, - 0x01, 0x31, 0x89, 0x10, 0x04, 0x4b, 0x84, 0xa5, 0x20, 0x17, 0x6b, 0x67, 0xbc, 0x64, 0x6f, 0x60, - 0x29, 0x48, 0xad, 0xa0, 0x01, 0x4b, 0x41, 0xce, 0xbd, 0xf3, 0xb0, 0x14, 0x64, 0x99, 0x90, 0x06, - 0x98, 0x1f, 0x02, 0x2b, 0x27, 0x22, 0xc7, 0x86, 0x1c, 0x1b, 0x56, 0x4e, 0x84, 0x5d, 0x39, 0x11, - 0x0b, 0x0d, 0xa2, 0xfc, 0x42, 0xf9, 0xb5, 0x56, 0xf2, 0x0b, 0x7d, 0x04, 0xaf, 0x09, 0x75, 0xf4, - 0x11, 0xcc, 0xfb, 0x60, 0xe8, 0x23, 0x78, 0xb2, 0x89, 0xd0, 0x47, 0x80, 0x3e, 0x02, 0x9d, 0xa6, - 0xb0, 0x85, 0x3e, 0x02, 0xf4, 0x11, 0xa0, 0x8f, 0xc0, 0x30, 0x83, 0x83, 0x3e, 0x82, 0x37, 0xf8, - 0x21, 0xcc, 0x68, 0xc0, 0x8c, 0x06, 0x2c, 0x34, 0x38, 0xcf, 0x06, 0xc4, 0x42, 0x83, 0x8b, 0x00, - 0x38, 0xe8, 0x31, 0x98, 0x5d, 0x55, 0xac, 0xcb, 0x87, 0x5c, 0x1b, 0x72, 0x6d, 0xc8, 0xb5, 0x21, - 0xd7, 0x86, 0x5c, 0x1b, 0x72, 0x6d, 0xc8, 0xb5, 0x21, 0xd7, 0x86, 0x5c, 0x5b, 0x56, 0xd9, 0x8c, - 0x75, 0xf9, 0xb0, 0x2e, 0x5f, 0x59, 0x1b, 0x0e, 0xc9, 0x5d, 0xac, 0xcb, 0xb7, 0x88, 0x0d, 0x87, - 0x75, 0xf9, 0xf2, 0x4c, 0x1e, 0xd6, 0xe5, 0xc3, 0xba, 0x7c, 0x1a, 0xa4, 0x81, 0x66, 0xcc, 0x8d, - 0x1b, 0x1d, 0xeb, 0xf2, 0x61, 0x5d, 0x3e, 0x33, 0xf7, 0xc7, 0xba, 0x7c, 0x58, 0x97, 0xef, 0xad, - 0xb1, 0xd0, 0x8b, 0x5d, 0x40, 0x2d, 0xa0, 0x17, 0xdb, 0x0c, 0x30, 0xc0, 0xba, 0x7c, 0x85, 0x36, - 0x23, 0xd6, 0xe5, 0x5b, 0xb4, 0xc6, 0x5f, 0x79, 0xef, 0xf6, 0xda, 0x95, 0xb1, 0x1b, 0x55, 0x7f, - 0x33, 0x55, 0xc5, 0xee, 0x9d, 0xc6, 0x69, 0xcc, 0x3b, 0x7d, 0x26, 0xa6, 0xad, 0x92, 0xa9, 0x3c, - 0x9f, 0x88, 0x6c, 0xc5, 0xc7, 0x42, 0xfa, 0x78, 0x32, 0xf8, 0xb7, 0xbd, 0xc7, 0xc1, 0xbf, 0x5d, - 0x8c, 0x07, 0xff, 0x32, 0xb7, 0x47, 0xfa, 0xed, 0xa9, 0xfd, 0xf5, 0x37, 0xde, 0x98, 0xf4, 0xca, - 0x5e, 0x34, 0x88, 0xc5, 0x16, 0x75, 0xe6, 0x02, 0x51, 0xf3, 0xad, 0x46, 0xaa, 0xa9, 0x3e, 0x04, - 0x76, 0x95, 0xb9, 0xdd, 0xa9, 0x39, 0x7f, 0xf6, 0x8b, 0xf8, 0x67, 0x8f, 0x0c, 0xba, 0x53, 0x0b, - 0x30, 0xe7, 0x94, 0x3f, 0x53, 0xb1, 0x95, 0x3d, 0xc7, 0x19, 0x67, 0x1b, 0x4b, 0xaa, 0x14, 0xe3, - 0x03, 0x69, 0xa9, 0xc0, 0x22, 0xd6, 0xc9, 0xde, 0xa7, 0xc7, 0xe8, 0xa1, 0x79, 0xc7, 0xce, 0x56, - 0xf5, 0x30, 0x73, 0xa0, 0x48, 0x9e, 0xc0, 0x90, 0x02, 0x81, 0x20, 0x79, 0xd5, 0x75, 0xe1, 0x40, - 0x8f, 0xc2, 0x1a, 0xb7, 0x58, 0x20, 0x87, 0x5e, 0xa9, 0x94, 0xb5, 0x4a, 0x61, 0xe5, 0xa9, 0x20, - 0xc9, 0x5f, 0xb6, 0x33, 0xa7, 0x3c, 0x7a, 0xe9, 0x90, 0x1c, 0x72, 0xdb, 0x0b, 0x24, 0xe3, 0x03, - 0xcb, 0x0e, 0xb8, 0x22, 0x8c, 0x53, 0x91, 0xa0, 0x91, 0x51, 0xec, 0x5d, 0x8a, 0xa8, 0xc7, 0x50, - 0xc5, 0xbe, 0xe2, 0x0e, 0x51, 0xc4, 0x0a, 0xb8, 0x75, 0xa8, 0x86, 0x54, 0x70, 0xaa, 0xa6, 0x02, - 0xf1, 0xb6, 0x2c, 0xeb, 0x72, 0x48, 0x25, 0xb5, 0x88, 0xa0, 0xc9, 0x20, 0x52, 0x11, 0xee, 0x10, - 0xe1, 0x5c, 0xf1, 0x93, 0xc6, 0x7b, 0x2b, 0x7d, 0x6c, 0xa9, 0xee, 0xbd, 0x51, 0x74, 0x5f, 0x66, - 0xfc, 0x59, 0xb8, 0xfa, 0x68, 0x0d, 0xab, 0x8f, 0x2e, 0x14, 0x29, 0x2f, 0xa4, 0xfa, 0xe8, 0x82, - 0xe4, 0x43, 0x01, 0x52, 0x23, 0x1f, 0x89, 0x51, 0x6c, 0x8f, 0x32, 0xb7, 0xab, 0xee, 0xc3, 0xc4, - 0x70, 0x66, 0xae, 0xea, 0x32, 0x4a, 0xe9, 0x4e, 0xad, 0xd1, 0x24, 0xce, 0x09, 0x19, 0xfc, 0x7b, - 0xc1, 0x9b, 0xb7, 0x00, 0x19, 0x61, 0x6c, 0xeb, 0xfe, 0x7a, 0xbe, 0x4a, 0x09, 0xaf, 0xd5, 0x41, - 0x2a, 0x4c, 0x15, 0xcb, 0x49, 0xa2, 0xae, 0xe3, 0xa9, 0x7e, 0x5a, 0x93, 0xc5, 0x62, 0x72, 0x04, - 0x9b, 0xf2, 0xae, 0x80, 0x06, 0x72, 0x40, 0x3f, 0x19, 0xa0, 0xd5, 0xf8, 0x7f, 0x56, 0xe8, 0xe6, - 0xcd, 0x89, 0x5c, 0x4e, 0xa3, 0xf6, 0x9d, 0x5e, 0xa3, 0xbc, 0xa8, 0xa1, 0x72, 0xfd, 0x96, 0xa1, - 0x92, 0xcd, 0x2a, 0xd4, 0x63, 0x0d, 0xce, 0xb1, 0xe3, 0xe6, 0xb1, 0xfb, 0x7e, 0xbd, 0x03, 0x5e, - 0x9f, 0x97, 0x5f, 0x48, 0x89, 0x8a, 0x3d, 0x01, 0x39, 0xbf, 0x9e, 0x8b, 0xf4, 0xc0, 0x8f, 0xbf, - 0xff, 0xc6, 0x2c, 0xcf, 0x87, 0xb8, 0xe6, 0x46, 0x58, 0x59, 0x10, 0xd5, 0x53, 0xed, 0x34, 0xcf, - 0xcc, 0x67, 0x94, 0x34, 0xb9, 0xf1, 0x51, 0x6e, 0xe1, 0x31, 0xab, 0x44, 0x2a, 0x86, 0xcd, 0xf9, - 0x79, 0xad, 0x94, 0x27, 0x62, 0xb5, 0x9b, 0xd5, 0xae, 0xcf, 0x2e, 0x93, 0x33, 0xe6, 0x62, 0x94, - 0x6e, 0x52, 0xcf, 0xb5, 0xe1, 0x56, 0xcf, 0xa0, 0x9e, 0x67, 0x43, 0x9a, 0x81, 0xcb, 0x99, 0xf3, - 0x1c, 0xf2, 0x87, 0x47, 0x3c, 0x86, 0x3f, 0x2c, 0x0d, 0xe0, 0x17, 0xd4, 0xa5, 0x82, 0x72, 0x9b, - 0x96, 0x89, 0xfa, 0xcf, 0x8f, 0xf6, 0xad, 0xc6, 0x4e, 0xa7, 0xd9, 0x8d, 0x0d, 0x77, 0x2b, 0x55, - 0x54, 0xd2, 0xfa, 0x24, 0x82, 0x28, 0xb4, 0x4e, 0x8f, 0x3f, 0x5a, 0x55, 0x8b, 0xb9, 0x7b, 0x1e, - 0x23, 0x72, 0xc1, 0x16, 0xc0, 0xe3, 0xfc, 0x2c, 0x93, 0x19, 0x90, 0x69, 0x02, 0xa1, 0xc1, 0x37, - 0xc3, 0xe4, 0x7c, 0xe1, 0xde, 0x45, 0x73, 0xe0, 0xcb, 0x39, 0x20, 0x03, 0xe5, 0xf1, 0x61, 0x75, - 0xb2, 0xab, 0xbc, 0xc9, 0x85, 0x73, 0xb3, 0xd3, 0x2e, 0x89, 0x3c, 0x95, 0xe9, 0x78, 0x57, 0xe2, - 0x6d, 0x3a, 0xdf, 0xbe, 0xb9, 0x46, 0xad, 0x8b, 0x5a, 0xb7, 0x54, 0xad, 0xdb, 0x0f, 0x02, 0x8f, - 0x66, 0x73, 0x3b, 0x4c, 0xd4, 0x6e, 0x1d, 0xd5, 0xee, 0x3c, 0x5a, 0xc3, 0xf1, 0x19, 0xbf, 0x50, - 0x44, 0x45, 0xa8, 0x7c, 0x8b, 0x28, 0xdf, 0xa9, 0x69, 0x44, 0x15, 0xbc, 0x8c, 0x2a, 0xd8, 0x57, - 0x51, 0x76, 0xf5, 0x1b, 0x5f, 0x84, 0x3a, 0x0f, 0x75, 0x5e, 0xa9, 0x3a, 0x2f, 0x62, 0x5c, 0xd5, - 0x3b, 0x39, 0x54, 0x5e, 0x86, 0x9c, 0xf0, 0x9c, 0xb9, 0xdf, 0x39, 0xf4, 0x51, 0x91, 0x5c, 0xee, - 0x34, 0x01, 0x38, 0x6f, 0x29, 0x0c, 0x5d, 0x59, 0xbe, 0xc5, 0xb3, 0x79, 0xf3, 0x78, 0x5e, 0x8a, - 0xe4, 0x54, 0xa7, 0x53, 0xd7, 0x69, 0xb7, 0x9b, 0x6d, 0xf8, 0xd3, 0x87, 0x2a, 0xd2, 0xbc, 0x8a, - 0x1c, 0x3b, 0x13, 0x32, 0xea, 0xc8, 0xe4, 0x2a, 0x54, 0x92, 0xa8, 0x24, 0x91, 0x8e, 0x85, 0x62, - 0x17, 0x6e, 0x37, 0x1a, 0xcd, 0xae, 0xb5, 0x67, 0xfd, 0xbf, 0xbd, 0xcf, 0x9f, 0xac, 0x03, 0xa2, - 0x88, 0x75, 0x1a, 0x38, 0xd4, 0x4b, 0xe2, 0xa9, 0x52, 0x13, 0xc7, 0x3a, 0x25, 0x9c, 0x0c, 0x92, - 0x4c, 0x20, 0xb4, 0x0c, 0x5f, 0xb1, 0x0c, 0x33, 0x4f, 0x24, 0x2a, 0xbe, 0x65, 0x54, 0x7c, 0x2a, - 0x8b, 0x18, 0x7a, 0x2c, 0x15, 0x37, 0x7f, 0x2f, 0x0c, 0x54, 0x7c, 0xa8, 0xf8, 0x9e, 0x41, 0x7b, - 0xee, 0x10, 0x15, 0x88, 0xfb, 0x0c, 0xf1, 0xde, 0xf9, 0x95, 0x25, 0x73, 0x28, 0x57, 0x4c, 0xdd, - 0x0b, 0xea, 0xe6, 0xd1, 0x98, 0x19, 0xcc, 0x87, 0xca, 0xf1, 0xf8, 0x56, 0x1f, 0x89, 0xa4, 0xf9, - 0xa3, 0x8f, 0x1f, 0x83, 0x82, 0x73, 0x34, 0x9c, 0x19, 0x99, 0x3e, 0x32, 0x57, 0x7a, 0x66, 0xd1, - 0x66, 0x53, 0x84, 0x93, 0x6a, 0xa1, 0x87, 0xd7, 0xf1, 0x12, 0xc5, 0x5e, 0x66, 0xe6, 0xa5, 0x5c, - 0xc7, 0x61, 0x05, 0xea, 0x18, 0xbe, 0x5f, 0xf4, 0xf3, 0x87, 0x22, 0x08, 0xf7, 0x94, 0x0f, 0xf9, - 0x15, 0x88, 0xb0, 0x39, 0x55, 0x90, 0xdf, 0x80, 0xc9, 0x60, 0x67, 0xa7, 0xd6, 0x68, 0xef, 0x9f, - 0x1f, 0xf5, 0x8e, 0x39, 0xe8, 0x57, 0xe9, 0x0f, 0xc2, 0x30, 0xf0, 0x98, 0x7d, 0x4f, 0x6c, 0x3b, - 0x88, 0xb8, 0x8a, 0xed, 0x10, 0xc0, 0xaf, 0xe3, 0x87, 0x9e, 0x84, 0xfc, 0xfc, 0x81, 0xe2, 0x67, - 0x4e, 0x04, 0xfa, 0x74, 0x7b, 0xd1, 0x61, 0x18, 0xf0, 0xde, 0xf0, 0x5e, 0x32, 0x9b, 0x78, 0x7f, - 0x72, 0xd0, 0xe2, 0x96, 0x8e, 0x93, 0x76, 0x9a, 0xa7, 0x7d, 0x06, 0x5b, 0x64, 0x8d, 0x82, 0xed, - 0xeb, 0x8d, 0x55, 0x78, 0x89, 0x3a, 0xe8, 0x97, 0xe0, 0x2e, 0xe3, 0xac, 0x4f, 0xb8, 0x03, 0xfa, - 0x98, 0x3b, 0xd2, 0x03, 0xbd, 0x97, 0xbc, 0xc0, 0x26, 0xde, 0x25, 0xf1, 0xbe, 0x83, 0x16, 0x4f, - 0xa1, 0x27, 0x24, 0x6c, 0x2c, 0x48, 0x42, 0xd0, 0x78, 0xe3, 0x5e, 0x30, 0xe0, 0x60, 0x96, 0x78, - 0xd1, 0xa7, 0x30, 0xe0, 0x67, 0x1c, 0x36, 0xec, 0x20, 0x5e, 0x1b, 0xf2, 0xf3, 0xdf, 0x04, 0xcc, - 0xa6, 0x47, 0x7f, 0x9f, 0x81, 0x5e, 0x03, 0xe5, 0x5f, 0x44, 0xfd, 0x94, 0x2a, 0x86, 0xfc, 0x2a, - 0x0e, 0x1b, 0x30, 0x45, 0xbc, 0x5e, 0x70, 0x4b, 0x85, 0xc7, 0x38, 0xe8, 0x77, 0x19, 0xb2, 0x30, - 0x04, 0x0d, 0xc2, 0x5d, 0x22, 0x41, 0x4b, 0x58, 0x27, 0xb0, 0xe5, 0x3e, 0xe9, 0x7b, 0xf4, 0x94, - 0xd8, 0x1e, 0xb9, 0xa7, 0x02, 0x3a, 0x01, 0xf5, 0x17, 0x13, 0xd4, 0xa3, 0x52, 0xf6, 0x1a, 0x3d, - 0xd0, 0x10, 0x90, 0x84, 0x7d, 0xd0, 0xe0, 0x83, 0x05, 0x77, 0x0d, 0xd0, 0x5a, 0x8f, 0xbb, 0x44, - 0xc2, 0xd7, 0xda, 0x9f, 0x0e, 0x0e, 0xf7, 0x3e, 0xef, 0x81, 0xa6, 0x9d, 0x42, 0xc5, 0x6c, 0xe2, - 0xed, 0x0f, 0x09, 0xe7, 0xd4, 0x4b, 0xa2, 0x81, 0x21, 0xbf, 0x8e, 0xcd, 0xa4, 0x1d, 0x1c, 0x5f, - 0x9c, 0x14, 0x6c, 0x5a, 0xb4, 0xf8, 0xf7, 0xb0, 0xd5, 0xa1, 0x1f, 0x79, 0xd0, 0x75, 0x77, 0x52, - 0xf9, 0x06, 0xf2, 0x4b, 0x28, 0x51, 0xab, 0xed, 0x40, 0x57, 0xda, 0x07, 0x81, 0x2d, 0x27, 0x8a, - 0xfb, 0xcf, 0x50, 0x2a, 0x41, 0x09, 0x68, 0x37, 0x52, 0x0c, 0xcb, 0x07, 0xd0, 0x25, 0xd5, 0x8d, - 0x7f, 0x4b, 0x04, 0xfd, 0xc2, 0x84, 0x8a, 0x88, 0xf7, 0x99, 0xd9, 0xc0, 0xed, 0x0c, 0x2a, 0x3c, - 0xc2, 0x1b, 0x2b, 0xe0, 0xbe, 0x00, 0xed, 0xd2, 0x93, 0x36, 0x74, 0x66, 0x19, 0xf2, 0xf3, 0x0f, - 0xd8, 0x80, 0xf4, 0x99, 0x9a, 0x94, 0x7b, 0x5b, 0x09, 0xc3, 0x75, 0xa2, 0x2f, 0xc6, 0x00, 0x11, - 0x34, 0xa6, 0xea, 0x7b, 0x5f, 0xa8, 0xad, 0xc8, 0x85, 0x22, 0xa0, 0x31, 0x89, 0x0c, 0x38, 0x55, - 0x3d, 0xa2, 0x86, 0xc0, 0x71, 0x89, 0xa2, 0x01, 0xdf, 0xa9, 0x41, 0x77, 0xaf, 0x0e, 0x03, 0xa9, - 0x7a, 0x04, 0xb4, 0x47, 0x8f, 0x81, 0x06, 0x52, 0x91, 0x04, 0x4d, 0xe5, 0xdc, 0xde, 0x12, 0xde, - 0xeb, 0x81, 0x46, 0x4e, 0x43, 0x67, 0x58, 0xdf, 0x69, 0x34, 0xa0, 0x9b, 0x49, 0xa7, 0x91, 0xa7, - 0x58, 0xe8, 0xd1, 0xbb, 0x00, 0xb4, 0x7a, 0x70, 0x6e, 0xfa, 0xe7, 0xb6, 0xbd, 0x0a, 0x76, 0x9e, - 0xa0, 0xc4, 0x1e, 0x1e, 0x5c, 0x9c, 0x80, 0xc6, 0x84, 0x6e, 0x08, 0x7e, 0x33, 0xc9, 0x53, 0x62, - 0x9f, 0xc0, 0xf7, 0x5e, 0x30, 0x9f, 0x88, 0xfb, 0xe3, 0x8b, 0x83, 0xcf, 0xe0, 0x79, 0xe7, 0xb3, - 0x1b, 0x2a, 0x8e, 0x41, 0xef, 0x2b, 0x45, 0x4f, 0x18, 0x87, 0x1d, 0x80, 0x63, 0x07, 0xc0, 0x6d, - 0xbc, 0x61, 0xe0, 0xd3, 0x90, 0x13, 0xd0, 0xa7, 0x01, 0x7a, 0x2c, 0x9a, 0xcb, 0xfa, 0x82, 0xae, - 0x80, 0x6d, 0x3d, 0xd8, 0xae, 0x35, 0x89, 0xea, 0xb4, 0xbe, 0xc3, 0xc6, 0xb1, 0x1e, 0x68, 0xfe, - 0xcc, 0x6b, 0xb2, 0xf0, 0x0e, 0xba, 0xe7, 0x6b, 0xa0, 0x40, 0x2b, 0xb6, 0xe1, 0x7d, 0x48, 0x85, - 0x0d, 0xff, 0x40, 0x8f, 0x52, 0x75, 0x7a, 0x5e, 0x04, 0xda, 0x4b, 0x2f, 0x81, 0x33, 0xca, 0x52, - 0x11, 0x71, 0x02, 0xfb, 0x3c, 0x33, 0xf7, 0x8b, 0xcb, 0x92, 0x9c, 0x4f, 0xc8, 0x60, 0x0f, 0xb6, - 0x5f, 0x28, 0x31, 0x1a, 0x0e, 0x8e, 0x0f, 0x60, 0x93, 0x94, 0xb1, 0xd5, 0x03, 0x3c, 0x01, 0x72, - 0xc4, 0xcd, 0xac, 0x82, 0x39, 0xed, 0x8a, 0xa3, 0x40, 0xdc, 0x12, 0xe1, 0xc0, 0x7e, 0x09, 0xe2, - 0xd3, 0x73, 0xea, 0x91, 0x7b, 0xd0, 0x88, 0x09, 0xb8, 0xd7, 0x7a, 0x92, 0xdb, 0xd5, 0x6e, 0x81, - 0x3e, 0xda, 0x12, 0x74, 0x6e, 0xda, 0x3f, 0x1e, 0x6c, 0xdb, 0x87, 0xd4, 0x1b, 0xa7, 0x61, 0x38, - 0xea, 0x10, 0x09, 0x5c, 0x43, 0xec, 0x49, 0x76, 0x16, 0x29, 0xe0, 0x2f, 0x71, 0xe9, 0x80, 0x56, - 0xd4, 0x14, 0xf4, 0x61, 0xe6, 0x12, 0xb6, 0x4b, 0x57, 0xfa, 0x8e, 0x3c, 0xb8, 0x63, 0xc0, 0x2d, - 0x37, 0xfb, 0xfb, 0x65, 0x70, 0x11, 0xff, 0x03, 0x5f, 0x1e, 0x1d, 0xf3, 0x15, 0x88, 0xec, 0x3b, - 0x09, 0x06, 0xcc, 0x26, 0x1e, 0x74, 0xc7, 0x83, 0xa0, 0x83, 0xc8, 0x23, 0x02, 0xba, 0xc7, 0x7d, - 0x52, 0x49, 0xe5, 0x32, 0xf8, 0x4e, 0xf9, 0x39, 0xf0, 0xe2, 0x23, 0x12, 0xba, 0x2f, 0xe8, 0xae, - 0x51, 0x6f, 0x02, 0x4f, 0xe8, 0x72, 0x81, 0x27, 0x31, 0xc3, 0x3e, 0xcd, 0x3e, 0xe8, 0xed, 0xef, - 0x13, 0xfb, 0x82, 0xda, 0xfb, 0x01, 0x57, 0x22, 0xf0, 0x3c, 0xea, 0x1c, 0x1f, 0x81, 0xd6, 0xd9, - 0x0e, 0xff, 0xbb, 0xb1, 0x0a, 0x39, 0xf1, 0x17, 0x2b, 0x15, 0x42, 0xbd, 0x1a, 0x4c, 0x59, 0x92, - 0xe4, 0x6f, 0x07, 0x9c, 0x53, 0x1b, 0x76, 0xf1, 0x0b, 0xd7, 0x23, 0x9c, 0xc6, 0x08, 0x04, 0x34, - 0xf0, 0x90, 0xdb, 0x17, 0x6c, 0x00, 0x1d, 0xd2, 0x3a, 0xb2, 0x7e, 0x74, 0x70, 0x02, 0x1b, 0xcd, - 0xc2, 0xce, 0x46, 0xf3, 0x03, 0x9b, 0x7c, 0xa1, 0x42, 0xb2, 0x80, 0xd7, 0xe1, 0xc7, 0xa1, 0x34, - 0xfc, 0xfe, 0x4a, 0x64, 0xce, 0x1e, 0xfd, 0x0d, 0xfa, 0x54, 0xc3, 0xf6, 0xd5, 0x85, 0x81, 0x5c, - 0x81, 0xe2, 0x4e, 0x2b, 0x52, 0x8d, 0xf1, 0x06, 0x78, 0x20, 0x47, 0x52, 0x4c, 0xd9, 0xa3, 0xe4, - 0x06, 0x74, 0x18, 0x84, 0x14, 0xe1, 0x0a, 0xd4, 0xba, 0xb8, 0x14, 0x84, 0xcb, 0x30, 0x10, 0xd0, - 0x6b, 0xb7, 0x1d, 0x9e, 0x80, 0xae, 0xc1, 0x33, 0xd8, 0xdd, 0xdd, 0x69, 0xc2, 0x46, 0xad, 0xcd, - 0xd5, 0x30, 0xe9, 0x2e, 0xa8, 0xb8, 0x61, 0xb0, 0xab, 0xb6, 0x25, 0x84, 0xc1, 0x21, 0xb7, 0x61, - 0xd7, 0x94, 0x0c, 0x03, 0xde, 0x59, 0x09, 0x56, 0xbf, 0xb9, 0x2f, 0x7d, 0x62, 0x3b, 0xf0, 0x43, - 0xb5, 0x0e, 0x82, 0x5b, 0x0e, 0x9f, 0xbd, 0xf1, 0x43, 0x4f, 0x5e, 0x46, 0xd0, 0x43, 0x92, 0xd3, - 0xd4, 0x27, 0xe8, 0x5d, 0x10, 0x46, 0xee, 0x48, 0xe0, 0x65, 0x57, 0x47, 0xf5, 0x6b, 0x3e, 0x33, - 0xfb, 0x12, 0xf8, 0xe1, 0xb8, 0x69, 0x76, 0xe0, 0x6b, 0xbe, 0x53, 0xd8, 0x21, 0xe2, 0xd5, 0x81, - 0xe4, 0xb0, 0xb1, 0xd4, 0x81, 0x67, 0xb3, 0x43, 0xee, 0xf4, 0x40, 0x1b, 0x15, 0x37, 0xa3, 0x6a, - 0x54, 0x97, 0x03, 0xf8, 0xbe, 0xbc, 0x3f, 0xb9, 0xbd, 0x22, 0xde, 0x3c, 0xaf, 0x01, 0x3d, 0xa5, - 0xcb, 0xbf, 0xf1, 0x56, 0xa1, 0x13, 0x08, 0x7c, 0x4c, 0xcb, 0xa4, 0x03, 0x3b, 0x52, 0x7c, 0x15, - 0x02, 0x7c, 0x65, 0xed, 0x63, 0xc4, 0x1d, 0x8f, 0x02, 0xaf, 0xf7, 0x7e, 0xec, 0xc3, 0xce, 0x1c, - 0x6f, 0x6e, 0x43, 0xaf, 0x57, 0xb3, 0xcf, 0x61, 0x77, 0xbc, 0x1a, 0x65, 0x74, 0xed, 0x03, 0x4f, - 0xba, 0x26, 0xca, 0xef, 0x07, 0xb0, 0x3b, 0xfa, 0x4c, 0x6a, 0x59, 0x9f, 0x5d, 0x80, 0xef, 0x4b, - 0x14, 0x02, 0x4f, 0x58, 0xb6, 0x49, 0xdf, 0xa3, 0x8f, 0xa4, 0xd3, 0xb9, 0xdb, 0x03, 0xee, 0xa7, - 0x90, 0x81, 0xab, 0x6e, 0x89, 0xa0, 0x27, 0x41, 0x10, 0xf6, 0x81, 0xc7, 0xc2, 0xa7, 0x04, 0xd4, - 0xd1, 0x4a, 0xe4, 0x0d, 0x8e, 0x99, 0x83, 0xa3, 0x4f, 0x07, 0xd0, 0xdd, 0x48, 0xb0, 0x4b, 0xcf, - 0x11, 0x41, 0x60, 0x87, 0x8e, 0xb7, 0x7d, 0x0f, 0xb4, 0xdb, 0x45, 0x10, 0x87, 0x05, 0xa7, 0x7b, - 0xfb, 0xab, 0xd1, 0x69, 0x66, 0xdf, 0x57, 0x72, 0x35, 0xdc, 0x16, 0x77, 0x3b, 0x9d, 0x13, 0x12, - 0x4a, 0xe0, 0x79, 0x09, 0xa0, 0xa1, 0x61, 0xe8, 0xf0, 0x24, 0x12, 0x2d, 0x56, 0xdf, 0x75, 0xd8, - 0xc0, 0x2a, 0xbc, 0x25, 0xe1, 0x41, 0xa0, 0xea, 0xf5, 0x8f, 0x12, 0xf4, 0x96, 0x8a, 0x3c, 0x05, - 0x5b, 0x61, 0x10, 0xd8, 0xee, 0xbb, 0xb1, 0x8b, 0xbb, 0x01, 0x3c, 0x61, 0x7e, 0xd8, 0x6c, 0x34, - 0x3f, 0x11, 0x45, 0xbf, 0x53, 0x1a, 0xc2, 0x2e, 0x45, 0x22, 0x42, 0xd8, 0x2d, 0x66, 0xc0, 0x3b, - 0xe6, 0x07, 0xa2, 0x59, 0x6b, 0x9e, 0x1f, 0x5c, 0x82, 0xcf, 0xe0, 0x8c, 0x6d, 0xbb, 0x21, 0x25, - 0xce, 0x0a, 0x14, 0x64, 0xec, 0x13, 0xc9, 0x6c, 0xe8, 0xc5, 0x6e, 0x81, 0x97, 0x31, 0x18, 0x4a, - 0xc9, 0x80, 0x2b, 0x6a, 0xe0, 0x55, 0x18, 0x26, 0x49, 0xe6, 0x47, 0xac, 0x0f, 0xbf, 0xf7, 0xe6, - 0x74, 0x1b, 0xaf, 0x55, 0xe8, 0x27, 0x2a, 0x59, 0x08, 0x3b, 0xd2, 0x60, 0xb2, 0xbb, 0x0e, 0x94, - 0x58, 0x01, 0x3f, 0x8c, 0x47, 0x6e, 0x41, 0x07, 0xf7, 0x43, 0x6f, 0x35, 0xc8, 0xfa, 0x7e, 0x73, - 0xbb, 0x16, 0x12, 0x11, 0xa3, 0x0f, 0xd8, 0xb5, 0xdd, 0x85, 0x0f, 0xbd, 0x23, 0x0e, 0xf0, 0x74, - 0xa3, 0xd8, 0xb8, 0xeb, 0x89, 0xe0, 0xee, 0x7e, 0x05, 0xc4, 0x6b, 0x2b, 0xa9, 0x10, 0xf3, 0x11, - 0xb6, 0x5f, 0x6f, 0xfc, 0x2e, 0x9d, 0x53, 0xe0, 0x91, 0x5c, 0xd4, 0x61, 0xe4, 0x94, 0x30, 0x0f, - 0x7e, 0x07, 0x0a, 0xc9, 0xee, 0x2e, 0x83, 0xa3, 0x20, 0x12, 0xab, 0x50, 0x3a, 0xb3, 0xf3, 0xd7, - 0xe9, 0xde, 0x67, 0xd8, 0x21, 0xc0, 0xbd, 0x5b, 0xe8, 0x45, 0xa2, 0x59, 0xb8, 0x02, 0x25, 0x71, - 0xed, 0xc0, 0x0f, 0x03, 0xc9, 0xe0, 0xf7, 0x67, 0x91, 0x2c, 0xbc, 0x60, 0x03, 0xf8, 0x9d, 0xe1, - 0x60, 0x97, 0xdf, 0x07, 0x1e, 0xdb, 0x35, 0xa9, 0x11, 0x03, 0x3a, 0xd1, 0x53, 0xb8, 0x76, 0xbd, - 0x05, 0x3b, 0xd5, 0x36, 0x0c, 0x78, 0xbd, 0x0d, 0xba, 0x50, 0x0f, 0xb1, 0x15, 0xf5, 0x98, 0x3c, - 0xa5, 0x8a, 0x9c, 0x9c, 0x9d, 0xc1, 0x3e, 0xd5, 0x1e, 0x70, 0x5a, 0x96, 0x85, 0x21, 0x4b, 0xca, - 0x58, 0xb9, 0xc4, 0x86, 0x1e, 0x86, 0x3d, 0x6e, 0x20, 0x0f, 0xda, 0xa8, 0x70, 0x57, 0xa1, 0x84, - 0xd5, 0xf3, 0x6a, 0x6f, 0xf0, 0x43, 0x37, 0x85, 0x6c, 0x34, 0x1b, 0xb0, 0x8b, 0x5a, 0x39, 0x14, - 0x76, 0x6a, 0x6a, 0x1d, 0x74, 0xcc, 0x0d, 0x95, 0x36, 0xec, 0xce, 0x14, 0xb1, 0x7c, 0x5d, 0x81, - 0xb4, 0x4e, 0xcf, 0x87, 0x5d, 0x15, 0x03, 0x36, 0xdc, 0x60, 0xd2, 0xe1, 0xa0, 0xb9, 0x4b, 0x05, - 0xdc, 0x8a, 0x1b, 0xc5, 0xb9, 0x7f, 0xbc, 0x80, 0xee, 0xff, 0xed, 0x05, 0x8c, 0xab, 0xcb, 0x20, - 0xf9, 0xe7, 0x82, 0x0a, 0x06, 0x1b, 0xf5, 0x0d, 0xa1, 0xb7, 0x6e, 0xbd, 0x6b, 0xb4, 0x87, 0x11, - 0x57, 0x9f, 0x44, 0x00, 0xbb, 0xf4, 0xe7, 0x98, 0x43, 0x6e, 0x12, 0xe7, 0x84, 0x80, 0xe6, 0xcb, - 0x42, 0xd8, 0x62, 0x2a, 0x50, 0xfc, 0x4c, 0x45, 0xd0, 0x53, 0x71, 0x40, 0x03, 0xd6, 0x30, 0x0c, - 0x81, 0x4b, 0xa4, 0x10, 0x76, 0x5e, 0xb9, 0x63, 0xc3, 0x76, 0x8f, 0x42, 0xef, 0x37, 0xeb, 0x0a, - 0xb7, 0xde, 0x39, 0x75, 0x05, 0xfc, 0x0a, 0x05, 0xa1, 0x08, 0x14, 0x0d, 0x78, 0xbd, 0x76, 0xda, - 0x67, 0x0a, 0x7a, 0x2f, 0xac, 0x63, 0x1b, 0xb6, 0x09, 0x64, 0x73, 0x01, 0x3c, 0x3f, 0x10, 0xf6, - 0xb1, 0xf6, 0x43, 0xd0, 0xc8, 0xe8, 0x1f, 0xd8, 0x69, 0x8c, 0x44, 0xde, 0x73, 0x7b, 0x35, 0x2a, - 0xc5, 0x9e, 0xf6, 0x8e, 0x81, 0xe3, 0xbb, 0xd3, 0xc8, 0x53, 0xcc, 0x63, 0xfc, 0x3b, 0x7c, 0x15, - 0x37, 0xae, 0xd6, 0x76, 0x1c, 0xee, 0x39, 0x8e, 0xa0, 0xb0, 0x93, 0x1a, 0xed, 0xc0, 0x75, 0x29, - 0xe8, 0xd5, 0xb0, 0xa9, 0x84, 0x4e, 0x30, 0x7d, 0xfc, 0x6b, 0x2f, 0x6c, 0x9c, 0xc2, 0x4e, 0xe5, - 0x97, 0xa2, 0x0f, 0xbc, 0x3a, 0x18, 0x68, 0xaa, 0x38, 0x29, 0xad, 0xff, 0x07, 0x70, 0xc2, 0xd8, - 0xf1, 0x24, 0xe8, 0x54, 0x08, 0xaf, 0xc9, 0x42, 0xe8, 0x35, 0x23, 0x99, 0x74, 0x60, 0xd7, 0x47, - 0x76, 0xd8, 0x80, 0x29, 0xe2, 0xfd, 0x25, 0x48, 0x18, 0x52, 0xb1, 0x42, 0x99, 0xa5, 0xd3, 0x25, - 0x21, 0x1a, 0xe0, 0x2b, 0xbc, 0xcb, 0x4b, 0x07, 0x76, 0x21, 0xc3, 0x24, 0x71, 0xf9, 0xcb, 0x25, - 0x74, 0xec, 0xb1, 0x02, 0x71, 0x4c, 0x44, 0xf9, 0xe3, 0x16, 0xd3, 0x2b, 0x11, 0xc8, 0xb4, 0x1a, - 0x35, 0x84, 0x88, 0xf2, 0xcf, 0x89, 0xc3, 0x02, 0xd0, 0xf6, 0xb7, 0xcd, 0x42, 0xf0, 0x5d, 0xcb, - 0x5d, 0x7b, 0x67, 0x7b, 0xfb, 0x0e, 0x76, 0xb7, 0x4d, 0x7b, 0x05, 0xea, 0x42, 0x08, 0xe6, 0x0c, - 0x28, 0xfc, 0x4a, 0x4e, 0x7f, 0xa9, 0x89, 0xca, 0x00, 0x7f, 0xbc, 0x89, 0xf2, 0x8f, 0x22, 0xd8, - 0xed, 0xf9, 0xfa, 0x4c, 0x49, 0xe8, 0x31, 0x10, 0xf5, 0xe6, 0x6e, 0x6b, 0x95, 0x4a, 0x44, 0xac, - 0x86, 0xfe, 0x4e, 0x6b, 0xae, 0x26, 0x98, 0x04, 0x76, 0xc5, 0x71, 0xd8, 0x9d, 0xa6, 0x87, 0xd0, - 0x5b, 0x70, 0x02, 0x67, 0x44, 0xa6, 0x2a, 0x18, 0xf6, 0x44, 0xe0, 0x32, 0xd8, 0xa7, 0x61, 0xdc, - 0x8b, 0x73, 0x05, 0xf8, 0x90, 0xa4, 0xfa, 0xd9, 0x31, 0xec, 0xea, 0x67, 0xff, 0x34, 0x76, 0x9b, - 0x75, 0xd8, 0x1e, 0x6e, 0x3a, 0x58, 0x8d, 0xbe, 0xae, 0x37, 0xcc, 0x66, 0x67, 0xa3, 0xc3, 0x71, - 0x58, 0xb0, 0xa4, 0x4d, 0xae, 0x2b, 0xaf, 0xdf, 0x95, 0x30, 0x69, 0xf9, 0x26, 0xeb, 0xd1, 0x20, - 0x76, 0x9c, 0x1c, 0x70, 0xb9, 0xfc, 0xe7, 0x8c, 0x21, 0x59, 0xae, 0x66, 0x85, 0xe5, 0x3f, 0x2a, - 0x11, 0x36, 0xa7, 0x0a, 0xc2, 0x93, 0x4e, 0xaa, 0x6e, 0xed, 0x9f, 0x1f, 0xf5, 0x8e, 0x39, 0x88, - 0x47, 0xee, 0x0f, 0xc2, 0x30, 0xf0, 0x98, 0x7d, 0x4f, 0x6c, 0x3b, 0x88, 0xb8, 0x62, 0x7c, 0x00, - 0xe1, 0xb1, 0xfd, 0x30, 0x4f, 0x83, 0x99, 0xf2, 0x9f, 0x33, 0x50, 0xfc, 0xcc, 0x89, 0x40, 0x9c, - 0xb2, 0x51, 0xeb, 0xcf, 0x42, 0x4d, 0xf9, 0xcb, 0x7f, 0xea, 0x49, 0x03, 0xb4, 0x66, 0xbe, 0x58, - 0xca, 0x05, 0x88, 0x88, 0x71, 0x59, 0x9c, 0x06, 0xa4, 0x87, 0xad, 0x83, 0x78, 0x58, 0xee, 0x32, - 0xce, 0xfa, 0x24, 0x4f, 0xc3, 0xa3, 0x05, 0x1c, 0xb7, 0x7c, 0x39, 0x46, 0xe5, 0x3f, 0xa8, 0x17, - 0xd8, 0xc4, 0xbb, 0x24, 0xde, 0x77, 0x10, 0xe2, 0x20, 0xf4, 0x84, 0x84, 0x81, 0x69, 0xf2, 0xb4, - 0x83, 0x5f, 0x80, 0x9e, 0xbd, 0x17, 0x0c, 0x08, 0xf8, 0x22, 0x5e, 0xf4, 0x29, 0x6f, 0xef, 0xea, - 0x05, 0x3c, 0x2d, 0xf1, 0xda, 0x10, 0x9e, 0x73, 0xd4, 0x80, 0xed, 0xef, 0x33, 0x10, 0x73, 0xaa, - 0xfc, 0x8b, 0xa8, 0x5f, 0xa0, 0x7c, 0x4a, 0xf9, 0x8f, 0x3c, 0x0e, 0xc5, 0xe9, 0x05, 0xb7, 0x54, - 0x78, 0x8c, 0x83, 0x78, 0xe6, 0xa4, 0x48, 0x0d, 0x84, 0x07, 0x75, 0x89, 0x04, 0x21, 0xb9, 0x1e, - 0x1b, 0x24, 0xe5, 0x2e, 0x9d, 0xbd, 0x18, 0x02, 0x61, 0xe2, 0xcf, 0xe9, 0x35, 0x7a, 0x20, 0xa0, - 0x0c, 0x09, 0xfb, 0x20, 0x94, 0x2e, 0x0b, 0x72, 0x45, 0x23, 0x94, 0xff, 0xa4, 0xdc, 0x25, 0x12, - 0x8e, 0x16, 0xfb, 0x74, 0x70, 0xb8, 0xf7, 0x79, 0x0f, 0x04, 0x6d, 0xf0, 0xc4, 0x05, 0x91, 0x33, - 0x8f, 0xbf, 0xfc, 0xc7, 0xb6, 0x99, 0xb4, 0x83, 0xe3, 0x8b, 0x93, 0x7c, 0x11, 0xbe, 0x0b, 0x78, - 0x5e, 0x5b, 0x1d, 0xfa, 0x91, 0x07, 0x45, 0x97, 0xe5, 0x24, 0xdd, 0xcb, 0x7f, 0x58, 0x25, 0x6a, - 0xb5, 0x1d, 0x28, 0x4a, 0x6c, 0x3a, 0x30, 0x61, 0x52, 0x21, 0x0d, 0x84, 0x36, 0x63, 0x9c, 0x0e, - 0xa0, 0x48, 0x86, 0x1b, 0xff, 0x96, 0x08, 0x3a, 0x0e, 0x8b, 0xfa, 0xcc, 0x6c, 0x20, 0x38, 0x97, - 0x0a, 0x8f, 0xf0, 0x06, 0x20, 0xfa, 0x16, 0x84, 0xcb, 0x41, 0xda, 0x50, 0x18, 0x3a, 0x08, 0xcf, - 0x39, 0x60, 0x03, 0xd2, 0x67, 0x23, 0xe5, 0x00, 0x84, 0xaa, 0x99, 0xa9, 0x48, 0x99, 0x3b, 0xd6, - 0x62, 0x01, 0x98, 0xa1, 0xef, 0x7d, 0xa1, 0xb6, 0x22, 0x17, 0x8a, 0x80, 0xd0, 0xc5, 0x49, 0x12, - 0x46, 0x8f, 0xa8, 0x21, 0x10, 0x7d, 0xac, 0x68, 0xc0, 0x77, 0x6a, 0x50, 0xdc, 0x39, 0xc3, 0x40, - 0xaa, 0x5c, 0x0d, 0x65, 0x16, 0xe0, 0x1f, 0x01, 0x01, 0x14, 0x22, 0x09, 0xc2, 0x44, 0x1f, 0x15, - 0xc0, 0x07, 0x81, 0x0c, 0x86, 0xce, 0xb0, 0xbe, 0xd3, 0x68, 0x40, 0x81, 0xe3, 0x49, 0x15, 0x84, - 0xd0, 0xa3, 0x77, 0x01, 0x08, 0xf1, 0x9a, 0x64, 0xea, 0xd9, 0x90, 0xec, 0x06, 0x41, 0x89, 0x3d, - 0x3c, 0xb8, 0x38, 0x01, 0x81, 0x6d, 0xdc, 0x10, 0xcc, 0x26, 0x90, 0xa7, 0xc4, 0x3e, 0x81, 0xc3, - 0xde, 0x32, 0x9f, 0x88, 0xfb, 0x7c, 0x5d, 0x58, 0x17, 0xc4, 0xdf, 0xe5, 0x6d, 0xec, 0xb4, 0x00, - 0xfe, 0x23, 0x67, 0x8b, 0x9a, 0x05, 0x38, 0xcc, 0xed, 0x00, 0x88, 0xcd, 0x30, 0x0c, 0x7c, 0x1a, - 0x72, 0x02, 0x62, 0xb7, 0x42, 0x89, 0xed, 0x70, 0x59, 0x5f, 0x50, 0x40, 0xb6, 0xd7, 0x60, 0xbb, - 0xd6, 0x24, 0xaa, 0xd3, 0xfa, 0x0e, 0x03, 0x77, 0x79, 0x20, 0x78, 0x0e, 0xaf, 0xc9, 0xc2, 0x3b, - 0x28, 0x8c, 0xfd, 0x40, 0x81, 0x50, 0x00, 0xc3, 0xfb, 0x90, 0x0a, 0x1b, 0xce, 0xc1, 0x1a, 0x85, - 0x58, 0xf7, 0xbc, 0x08, 0x84, 0x37, 0x4f, 0x02, 0x61, 0xe6, 0xa4, 0x22, 0xe2, 0x04, 0xc6, 0xb9, - 0x62, 0xee, 0x17, 0x97, 0xe5, 0xeb, 0x72, 0xb8, 0x00, 0xd0, 0x02, 0x83, 0xe7, 0x4e, 0x40, 0xeb, - 0xc1, 0xf1, 0x01, 0x0c, 0x72, 0x28, 0x46, 0xd7, 0x40, 0x12, 0x42, 0x46, 0x36, 0x37, 0x24, 0x73, - 0xcb, 0x15, 0xb9, 0xfb, 0x6f, 0x2e, 0xe2, 0x61, 0x27, 0x35, 0x35, 0x41, 0x20, 0x02, 0x20, 0x5e, - 0xaf, 0x49, 0x2c, 0x7d, 0xbb, 0x05, 0xe2, 0x88, 0x49, 0x10, 0x31, 0xff, 0xff, 0x78, 0x30, 0x30, - 0x36, 0xa9, 0x37, 0x4e, 0xc3, 0xf0, 0xe2, 0x96, 0x29, 0x7b, 0x08, 0x44, 0xc2, 0xee, 0x49, 0x76, - 0x16, 0x29, 0x20, 0x0f, 0x7b, 0xe9, 0x80, 0x50, 0x5c, 0x14, 0xc4, 0xa1, 0xe2, 0x12, 0x86, 0xab, - 0x48, 0xfa, 0x8e, 0x3c, 0xb8, 0x63, 0x40, 0x2c, 0x01, 0xfb, 0xfb, 0x65, 0x70, 0x11, 0xff, 0x03, - 0xe7, 0xfc, 0x1f, 0x73, 0x40, 0x91, 0x2f, 0xe3, 0xfa, 0x76, 0x50, 0x88, 0x57, 0x41, 0x07, 0x91, - 0x47, 0x04, 0x14, 0xcf, 0xdc, 0x24, 0xb3, 0xf9, 0x32, 0xf8, 0x4e, 0xf9, 0x39, 0x90, 0x24, 0x61, - 0x09, 0x85, 0xdb, 0xbe, 0x6b, 0xd4, 0x9b, 0x40, 0x02, 0xe8, 0x5d, 0x20, 0xc9, 0x55, 0x30, 0x4e, - 0x95, 0x0f, 0x62, 0x7b, 0xfa, 0xc4, 0xbe, 0xa0, 0xf6, 0x7e, 0xc0, 0x95, 0x08, 0x3c, 0x8f, 0x3a, - 0xc7, 0x47, 0x20, 0x74, 0x98, 0xc3, 0xff, 0x6e, 0x40, 0xca, 0xb1, 0xbb, 0x00, 0x19, 0xba, 0x07, - 0x8b, 0xd1, 0x48, 0x92, 0x03, 0xed, 0x80, 0x73, 0x6a, 0xc3, 0x48, 0x6a, 0x75, 0x3d, 0xc2, 0x69, - 0xac, 0x79, 0x41, 0x28, 0x5c, 0xb9, 0x9d, 0xbb, 0x5f, 0xfa, 0x42, 0x38, 0x8e, 0xa3, 0x83, 0x13, - 0x18, 0xe8, 0x0b, 0x46, 0x94, 0xbf, 0x1f, 0xd8, 0xe4, 0x0b, 0x15, 0x92, 0x05, 0xbc, 0x0e, 0xc7, - 0x9f, 0xdc, 0xf0, 0xfb, 0xa0, 0x32, 0x80, 0x8e, 0xfe, 0x06, 0x71, 0xba, 0x60, 0xf8, 0x12, 0xc2, - 0x40, 0x02, 0x2a, 0x6e, 0x00, 0xac, 0x3a, 0xcf, 0x0d, 0x10, 0x47, 0x2d, 0x8b, 0x51, 0x81, 0x47, - 0xc9, 0x0d, 0x08, 0xf7, 0xa7, 0x14, 0x21, 0xa0, 0x1c, 0xd6, 0x02, 0xa5, 0x0f, 0x17, 0xc3, 0x25, - 0x9d, 0x80, 0xc8, 0x65, 0x1f, 0xec, 0xee, 0xee, 0x34, 0x61, 0xa0, 0xac, 0x26, 0x2c, 0x13, 0xe1, - 0x82, 0x8a, 0x1b, 0x06, 0xa3, 0x7a, 0x48, 0x62, 0x38, 0x1e, 0x72, 0x1b, 0x46, 0x2d, 0xa1, 0x30, - 0xe0, 0x1d, 0x50, 0x6c, 0x67, 0x73, 0x5f, 0xfa, 0xc4, 0x76, 0xe0, 0x84, 0x44, 0x14, 0xa9, 0xab, - 0xbe, 0x98, 0x1a, 0x8e, 0x97, 0x11, 0x94, 0x10, 0xb9, 0x34, 0x04, 0x1d, 0x4a, 0xd5, 0xd4, 0x91, - 0x5b, 0x04, 0x48, 0x39, 0xac, 0x51, 0x7e, 0xf8, 0x67, 0x66, 0x5f, 0x02, 0xd9, 0xbc, 0x37, 0xcd, - 0x0e, 0x1c, 0x0d, 0x71, 0x0a, 0x23, 0x04, 0xb1, 0x3a, 0x90, 0x1c, 0x06, 0x56, 0x38, 0xf0, 0x6c, - 0x76, 0xc8, 0x9d, 0x1e, 0x08, 0x50, 0x3b, 0x6e, 0xc6, 0x7b, 0x39, 0x80, 0xe3, 0x6b, 0xf8, 0x93, - 0xdb, 0xc0, 0xbc, 0x0d, 0x5e, 0x03, 0x4a, 0x08, 0xbd, 0x7f, 0xe3, 0x41, 0xaa, 0xec, 0x0b, 0x07, - 0x83, 0x31, 0xe9, 0xc0, 0x88, 0x44, 0x84, 0x14, 0x88, 0x26, 0x6b, 0x79, 0xbb, 0xa1, 0x2f, 0xa4, - 0xfe, 0xe4, 0xb1, 0x0f, 0x23, 0x43, 0xad, 0xb9, 0x0d, 0x25, 0x1f, 0x7c, 0x9f, 0xc3, 0xa8, 0xf4, - 0x3e, 0x8a, 0xa0, 0xdf, 0x07, 0x92, 0xf4, 0x45, 0x94, 0xdf, 0x0f, 0x60, 0x54, 0xca, 0x9e, 0xd4, - 0xee, 0x3b, 0xbb, 0x00, 0x53, 0xd7, 0x3b, 0x04, 0x92, 0x48, 0x65, 0x3f, 0x6d, 0xa6, 0x7a, 0xee, - 0xf6, 0x80, 0xf0, 0xb4, 0x32, 0x70, 0x55, 0x6c, 0x30, 0x9e, 0x04, 0x41, 0xd8, 0x07, 0x12, 0x53, - 0x99, 0x12, 0x08, 0x47, 0xa0, 0xf2, 0x2b, 0xc6, 0x16, 0xe4, 0xd1, 0xa7, 0x03, 0x28, 0xb4, 0x38, - 0x8c, 0x52, 0x27, 0x44, 0x10, 0x18, 0xa1, 0x89, 0x6d, 0xdf, 0x03, 0x41, 0x2f, 0x0b, 0xe2, 0xb0, - 0xe0, 0x74, 0x6f, 0x1f, 0x56, 0xc5, 0xe7, 0x7d, 0x5f, 0x49, 0x58, 0xb4, 0xed, 0xdd, 0x4e, 0xe7, - 0x84, 0x84, 0x12, 0x48, 0xbc, 0x2a, 0x08, 0x88, 0x13, 0x3a, 0x3c, 0x89, 0xec, 0x88, 0xd5, 0x59, - 0x1d, 0x06, 0x70, 0x48, 0x1b, 0x3e, 0x7e, 0x94, 0x20, 0xb6, 0x42, 0xe4, 0x29, 0x18, 0x02, 0x97, - 0xc0, 0x70, 0x2f, 0x8c, 0x5d, 0x64, 0x0d, 0x20, 0x09, 0x78, 0xc3, 0x66, 0xa3, 0xf9, 0x89, 0x28, - 0xfa, 0x9d, 0xd2, 0x10, 0x46, 0xca, 0xb0, 0x08, 0x61, 0x94, 0x7a, 0x06, 0xe3, 0xc0, 0x4b, 0x9a, - 0xa1, 0x9e, 0xe7, 0x69, 0x86, 0xba, 0xa0, 0xcc, 0x95, 0xd8, 0x56, 0x18, 0x52, 0xe2, 0x00, 0x2a, - 0xd0, 0xd3, 0x27, 0x92, 0xd9, 0x50, 0x8a, 0x8a, 0x01, 0x49, 0x73, 0x1c, 0x4a, 0xc9, 0x80, 0x28, - 0x2e, 0x20, 0xd9, 0x98, 0x93, 0x64, 0xb6, 0x23, 0xd6, 0x87, 0xd3, 0x6b, 0x65, 0xba, 0x4c, 0x3d, - 0xa4, 0x3e, 0x31, 0x92, 0x85, 0x30, 0x3c, 0x8f, 0x93, 0x5d, 0x71, 0xa0, 0x04, 0x20, 0xbe, 0xd9, - 0x23, 0xb7, 0x30, 0xfa, 0xa0, 0x02, 0x69, 0x5d, 0xc1, 0xfa, 0x7e, 0x73, 0xbb, 0x16, 0x12, 0x11, - 0x6b, 0x5d, 0x18, 0xb5, 0x26, 0x85, 0x0f, 0xa5, 0x02, 0x35, 0x90, 0x70, 0xf0, 0xd8, 0x58, 0xe8, - 0x89, 0xe0, 0xee, 0x1e, 0x90, 0xd8, 0x6a, 0x25, 0x99, 0xd9, 0x1f, 0x61, 0xf8, 0x1d, 0xc6, 0xcf, - 0xdc, 0x39, 0x05, 0x12, 0x31, 0x41, 0x1d, 0x46, 0x4e, 0x09, 0xf3, 0xe0, 0x54, 0xa0, 0x95, 0xec, - 0xee, 0x32, 0x38, 0x0a, 0x22, 0x01, 0xa9, 0x34, 0x52, 0xe7, 0xaf, 0xd3, 0xbd, 0xcf, 0x30, 0x42, - 0xd5, 0x7a, 0xb7, 0x50, 0x8a, 0xe5, 0xb1, 0x10, 0x50, 0xe9, 0x31, 0x3b, 0xf0, 0xc3, 0x40, 0x32, - 0x38, 0xf5, 0x93, 0x25, 0x0b, 0x2f, 0xd8, 0x00, 0x4e, 0xc7, 0x02, 0x18, 0xe5, 0x3d, 0x81, 0xc4, - 0x50, 0x4c, 0x72, 0xb3, 0x41, 0x24, 0xb8, 0x08, 0xd7, 0xae, 0xb7, 0x60, 0xa4, 0x0c, 0x85, 0x01, - 0xaf, 0xb7, 0x41, 0x24, 0xbc, 0x13, 0x5b, 0x51, 0x8f, 0xc9, 0x53, 0xaa, 0xc8, 0xc9, 0xd9, 0x19, - 0x8c, 0xd3, 0xe5, 0x01, 0xa1, 0xbd, 0x58, 0x18, 0x32, 0x50, 0xbd, 0x9c, 0x89, 0xf2, 0xc7, 0x0d, - 0xee, 0x40, 0x80, 0x5a, 0x17, 0x52, 0xa9, 0x86, 0xe7, 0x55, 0x47, 0xe0, 0x84, 0x2a, 0x09, 0xd9, - 0x68, 0x36, 0x60, 0x14, 0x6f, 0x70, 0x28, 0x8c, 0xd4, 0x9b, 0x3a, 0x08, 0x1f, 0x39, 0x95, 0x36, - 0x8c, 0xca, 0xb4, 0xb1, 0xdc, 0x02, 0x94, 0xce, 0xe2, 0xf9, 0x30, 0xb2, 0x5d, 0x61, 0xa8, 0x59, - 0x26, 0x1d, 0x0e, 0x82, 0x33, 0x52, 0x40, 0xac, 0x82, 0x51, 0xbc, 0xe4, 0xc7, 0x0b, 0x28, 0x7e, - 0xa5, 0x5e, 0xc0, 0xb8, 0xba, 0x0c, 0x92, 0x7f, 0x2e, 0xa8, 0x60, 0x30, 0xd0, 0xcb, 0x10, 0x4a, - 0x8b, 0x9d, 0xbb, 0x46, 0x7b, 0x18, 0x71, 0x05, 0xa6, 0x85, 0xfb, 0x98, 0x8b, 0x6b, 0x12, 0xe7, - 0x84, 0x80, 0xe0, 0x35, 0x42, 0x18, 0x62, 0x21, 0x50, 0xfc, 0x4c, 0x45, 0x50, 0x42, 0xa8, 0x41, - 0x00, 0xac, 0x30, 0x0c, 0x81, 0x48, 0x80, 0x10, 0x46, 0xfe, 0x9a, 0x63, 0xc3, 0x70, 0xc7, 0x40, - 0xe9, 0xff, 0xe3, 0x0a, 0xb7, 0xde, 0x39, 0x75, 0x05, 0x9c, 0x0c, 0xc6, 0x71, 0xff, 0xe5, 0x3a, - 0x98, 0xfe, 0xcb, 0xd2, 0x77, 0xe4, 0xb1, 0x0d, 0x03, 0x6a, 0xdb, 0x5c, 0x00, 0xc9, 0xa3, 0x80, - 0x71, 0xbc, 0xfc, 0x10, 0x84, 0xe6, 0xff, 0x07, 0x46, 0x5a, 0x07, 0x91, 0xf7, 0xdc, 0x86, 0x55, - 0xa9, 0xeb, 0xb4, 0x77, 0x0c, 0x04, 0xa7, 0x24, 0x4d, 0xad, 0x3d, 0xc6, 0xbf, 0xc3, 0x51, 0x05, - 0xe3, 0xaa, 0x21, 0xc7, 0xe1, 0x9e, 0xe3, 0x08, 0x0a, 0x23, 0xc9, 0xc3, 0x0e, 0x5c, 0x97, 0x82, - 0x98, 0x5d, 0x9b, 0x4a, 0x28, 0x04, 0xc1, 0xc7, 0xbf, 0xf6, 0xc2, 0xc6, 0x29, 0x8c, 0x14, 0x40, - 0x29, 0xfa, 0x40, 0xaa, 0x5a, 0x80, 0xa0, 0xdc, 0x92, 0xd2, 0x9d, 0x7f, 0x00, 0x21, 0xde, 0x1c, - 0x4f, 0xde, 0x42, 0xe9, 0xb7, 0x0b, 0xa5, 0x56, 0x10, 0x93, 0x0e, 0x8c, 0xfa, 0x71, 0x0e, 0x1b, - 0x30, 0x45, 0xbc, 0xbf, 0x04, 0x09, 0x43, 0x2a, 0x00, 0x66, 0xce, 0x4c, 0xa7, 0x80, 0x36, 0xc0, - 0x54, 0x9c, 0x94, 0x97, 0x0e, 0x8c, 0x82, 0x37, 0x49, 0x42, 0xd5, 0x97, 0x4b, 0x28, 0x3a, 0x17, - 0x50, 0x1c, 0x01, 0x51, 0xfe, 0xb8, 0xf5, 0x16, 0xa8, 0x40, 0x02, 0x58, 0x39, 0xf7, 0x44, 0xf9, - 0xe7, 0xc4, 0x61, 0x01, 0x08, 0xfb, 0xcc, 0x66, 0x21, 0x98, 0x2e, 0x6c, 0xae, 0xbd, 0xb3, 0xbd, - 0x7d, 0x07, 0xa3, 0xbb, 0x0a, 0xa0, 0x7e, 0xf2, 0x7d, 0xc1, 0x9c, 0x01, 0x85, 0x53, 0xc9, 0xe0, - 0x2f, 0x35, 0x11, 0xb9, 0x60, 0x8e, 0x19, 0x51, 0xfe, 0x51, 0x04, 0xa3, 0x0d, 0x44, 0x9f, 0x29, - 0x09, 0xc5, 0xf7, 0x59, 0x6f, 0xee, 0xb6, 0x20, 0xa6, 0x84, 0xc2, 0xd2, 0x67, 0x69, 0x2d, 0xac, - 0x44, 0x17, 0xc3, 0xa8, 0x98, 0x08, 0xa3, 0x03, 0xd7, 0x10, 0x4a, 0xcb, 0x15, 0x20, 0x16, 0xf0, - 0x54, 0xa5, 0x9b, 0x9e, 0x08, 0x5c, 0x06, 0x63, 0xb7, 0x8e, 0x7b, 0xaf, 0x00, 0xb2, 0x7f, 0x93, - 0xea, 0x1c, 0xc7, 0x30, 0xaa, 0x73, 0xfc, 0xd3, 0xd8, 0x6d, 0xd6, 0x61, 0x78, 0xc8, 0xe8, 0x00, - 0x56, 0xff, 0x9d, 0x1b, 0x66, 0xb3, 0xb3, 0xd1, 0xe6, 0x3d, 0xcc, 0x99, 0x32, 0x9e, 0xe9, 0x8a, - 0xeb, 0x77, 0x7a, 0xc7, 0x9d, 0x73, 0xca, 0x2a, 0xf4, 0x4e, 0x09, 0x52, 0x8d, 0xb8, 0x54, 0x89, - 0x02, 0xec, 0x66, 0x98, 0xb8, 0x8a, 0xa0, 0x2e, 0x15, 0x94, 0xdb, 0xf1, 0x65, 0x5f, 0xdf, 0x99, - 0x5d, 0x9d, 0x74, 0x65, 0xce, 0x8f, 0xf6, 0xad, 0xc6, 0x4e, 0xa7, 0xd9, 0xb5, 0x2e, 0x87, 0xd4, - 0x4a, 0xf3, 0x32, 0xa4, 0x95, 0x44, 0xb6, 0x59, 0xa7, 0xc7, 0x1f, 0xad, 0xaa, 0xc5, 0xdc, 0x24, - 0x2b, 0x32, 0xfb, 0xb6, 0xa9, 0x5c, 0x04, 0x91, 0xb0, 0xb3, 0xcd, 0xc3, 0x93, 0xeb, 0xff, 0x4b, - 0xef, 0x6f, 0x03, 0xe1, 0x8c, 0x3a, 0x6b, 0x4f, 0xa6, 0xe7, 0x7d, 0xbe, 0xb1, 0xfe, 0x20, 0x72, - 0x4f, 0x0c, 0x22, 0x9f, 0x72, 0x55, 0xe9, 0x5a, 0x4a, 0x44, 0x34, 0xe7, 0x40, 0x53, 0xa3, 0x64, - 0x9a, 0x3f, 0xc3, 0x7b, 0x7e, 0xfe, 0x6f, 0x5f, 0x6b, 0xdd, 0xf3, 0x7b, 0x9c, 0x07, 0x8a, 0x28, - 0x16, 0xf0, 0x6c, 0xfb, 0xfd, 0x7e, 0x10, 0xa8, 0x6a, 0x60, 0x57, 0xed, 0xc0, 0x0f, 0x05, 0x95, - 0x92, 0x3a, 0x55, 0x8f, 0x12, 0x37, 0x1e, 0x64, 0xce, 0x43, 0xf9, 0xae, 0xd8, 0x37, 0xde, 0x78, - 0xc1, 0xac, 0x2f, 0x56, 0x91, 0xf6, 0x90, 0xfa, 0x24, 0x24, 0x6a, 0x18, 0xef, 0x8c, 0x0f, 0x41, - 0x48, 0xb9, 0x1d, 0x70, 0x97, 0x0d, 0xaa, 0x2c, 0xdd, 0x17, 0x1f, 0x5e, 0xfa, 0xf8, 0x61, 0xf4, - 0xb5, 0x5f, 0x6f, 0x90, 0xd7, 0xdf, 0xe5, 0x17, 0xef, 0x91, 0x96, 0xdb, 0x7f, 0xf3, 0x0d, 0x66, - 0x0a, 0xf4, 0xbf, 0x71, 0xcc, 0x2a, 0xff, 0x65, 0x3c, 0x3e, 0x97, 0xf5, 0x37, 0xbe, 0xb6, 0x3f, - 0x7a, 0xb5, 0xae, 0x55, 0x7b, 0xe3, 0x8b, 0x3d, 0x41, 0x5d, 0x76, 0x37, 0xdf, 0x4c, 0xa7, 0x78, - 0xc8, 0xae, 0x52, 0x35, 0x9c, 0x43, 0x20, 0x64, 0x15, 0x44, 0xd3, 0x82, 0x27, 0x1c, 0x3d, 0xd8, - 0x9c, 0xa7, 0x21, 0xaf, 0x94, 0x79, 0x22, 0x55, 0xc6, 0xef, 0x65, 0x78, 0x7f, 0x1f, 0x30, 0x31, - 0xdf, 0x74, 0xdb, 0x93, 0x35, 0x9c, 0x73, 0xf2, 0x1e, 0xfd, 0xf6, 0xc9, 0x75, 0x73, 0x4e, 0xc0, - 0x7c, 0x1b, 0x2a, 0xf3, 0xc6, 0xca, 0xb3, 0xc1, 0xf2, 0x6f, 0xb4, 0xa2, 0x9a, 0x2f, 0xf7, 0xc6, - 0xd3, 0xa6, 0xe6, 0x72, 0x6d, 0x44, 0x33, 0x68, 0x6a, 0xde, 0x0d, 0x9a, 0x5e, 0x40, 0x06, 0x03, - 0x41, 0x07, 0x44, 0xd1, 0x2a, 0x73, 0xb2, 0x4f, 0x7d, 0x8a, 0x56, 0xa7, 0x47, 0xc9, 0x38, 0x79, - 0xe3, 0x4d, 0x5c, 0xcb, 0x78, 0x59, 0xd6, 0xcd, 0x5c, 0x64, 0x53, 0xbf, 0xb4, 0xb9, 0x3d, 0x32, - 0x58, 0x30, 0xbc, 0xcb, 0xb5, 0xd9, 0xcd, 0x62, 0xbb, 0xf1, 0xbc, 0x98, 0x86, 0x6d, 0x19, 0x57, - 0x3c, 0x81, 0x92, 0x85, 0xd6, 0x3b, 0x46, 0x59, 0x82, 0xba, 0x79, 0x16, 0x7c, 0x22, 0xa3, 0xb7, - 0x73, 0x5c, 0xdb, 0x4b, 0x81, 0x91, 0x5d, 0x65, 0x6e, 0x77, 0x0a, 0x08, 0x3d, 0xfb, 0xc5, 0xf8, - 0x67, 0x1e, 0x3f, 0xae, 0xd1, 0xa9, 0xcc, 0x89, 0x5c, 0xf5, 0x21, 0xd8, 0xec, 0x3b, 0x26, 0xc3, - 0x2b, 0x56, 0x48, 0xa4, 0x82, 0x2a, 0xa7, 0x83, 0x40, 0x31, 0xa2, 0x68, 0x01, 0x79, 0xf8, 0x74, - 0x9c, 0x8c, 0x93, 0x7c, 0x40, 0x5d, 0x12, 0x79, 0x2a, 0xb3, 0x51, 0x9b, 0x5c, 0x1c, 0x9f, 0xe4, - 0x6c, 0x7b, 0xe0, 0x7a, 0x3d, 0x04, 0x76, 0x36, 0x34, 0xb2, 0x3e, 0x02, 0x3b, 0x13, 0x5a, 0x81, - 0x22, 0xb0, 0xfb, 0x41, 0xe0, 0x51, 0xc2, 0x8b, 0x08, 0xec, 0xba, 0xd1, 0x57, 0x2c, 0x40, 0x7b, - 0x69, 0xa0, 0xbf, 0x8a, 0x91, 0x94, 0x4f, 0x66, 0xfa, 0xf8, 0xf0, 0xf0, 0xd0, 0xda, 0xa9, 0x35, - 0xb6, 0x9a, 0xd5, 0x46, 0xad, 0xde, 0xb0, 0x9e, 0x88, 0x3e, 0x16, 0x70, 0x2b, 0x89, 0x9d, 0xf4, - 0x99, 0x94, 0xf1, 0x0f, 0x21, 0x11, 0xc4, 0xa7, 0x8a, 0x0a, 0x99, 0xf3, 0x18, 0xe8, 0x38, 0x93, - 0x26, 0xb8, 0x32, 0xed, 0xc7, 0xf4, 0xc5, 0xe3, 0x9a, 0x7b, 0xb2, 0x73, 0x3f, 0xc2, 0xc3, 0xbb, - 0x72, 0xae, 0xba, 0x46, 0xd8, 0x92, 0x1f, 0xb6, 0x38, 0x51, 0xe8, 0xd1, 0xbb, 0xaa, 0x1f, 0x38, - 0x05, 0x30, 0xcb, 0xf4, 0x20, 0x88, 0x08, 0x10, 0x11, 0xac, 0x18, 0x22, 0xa0, 0x3c, 0xf2, 0xa9, - 0x18, 0xc9, 0x80, 0x02, 0xa8, 0xa0, 0x95, 0xe3, 0xda, 0x43, 0x1e, 0xf9, 0x39, 0x44, 0x05, 0xca, - 0xb8, 0x27, 0x80, 0x89, 0xc7, 0x40, 0xa9, 0xea, 0x7a, 0xc1, 0x6d, 0x75, 0xdc, 0x12, 0x39, 0xbf, - 0xac, 0x7b, 0x69, 0xb0, 0x32, 0x8d, 0x34, 0x97, 0x78, 0x12, 0xad, 0x34, 0x94, 0xc9, 0x68, 0xa5, - 0xa1, 0x95, 0x56, 0xb2, 0x95, 0x76, 0x87, 0x86, 0x57, 0x21, 0xc3, 0xeb, 0x0e, 0x6d, 0xa9, 0x95, - 0xc6, 0x19, 0x3e, 0xb1, 0xab, 0x64, 0x9c, 0xe8, 0x9d, 0x1b, 0x5f, 0x4c, 0x0f, 0x82, 0x7a, 0x1b, - 0xf5, 0xf6, 0x8a, 0xe9, 0xed, 0xfc, 0xdb, 0xfb, 0x89, 0xee, 0xde, 0xc9, 0xe7, 0x12, 0x53, 0x54, - 0xf0, 0xdc, 0xba, 0xb4, 0xf2, 0xb5, 0x56, 0xdd, 0x25, 0x55, 0x77, 0xaf, 0x7a, 0x74, 0xfd, 0xa3, - 0xf1, 0xb0, 0xd1, 0x7d, 0xfa, 0xf3, 0xe6, 0x8f, 0xf6, 0x43, 0x05, 0x05, 0x6e, 0x99, 0x02, 0x37, - 0x0c, 0x84, 0xaa, 0xca, 0x90, 0xd2, 0x02, 0xf1, 0x07, 0x53, 0x63, 0xa0, 0xb8, 0x45, 0x71, 0xbb, - 0x62, 0xe2, 0x96, 0x39, 0x94, 0x2b, 0xa6, 0xee, 0x0b, 0x46, 0x20, 0xb4, 0x73, 0x5c, 0x7b, 0x3c, - 0xbe, 0xf5, 0x47, 0x22, 0x0b, 0x6c, 0x9b, 0xc9, 0x8b, 0x1c, 0x5e, 0xfe, 0x71, 0x78, 0xfe, 0xf9, - 0xf0, 0xf2, 0xdb, 0x45, 0xef, 0xf0, 0xf0, 0x20, 0xef, 0xde, 0xf9, 0x42, 0xbc, 0x88, 0xca, 0xdc, - 0x1a, 0xa0, 0x98, 0x45, 0xf5, 0xe4, 0x7d, 0x92, 0xd7, 0xf8, 0xf6, 0xe7, 0xe7, 0xff, 0x7e, 0x3e, - 0xfb, 0xeb, 0x73, 0x01, 0xbb, 0xe0, 0xfd, 0x72, 0xbc, 0x48, 0xbd, 0xf6, 0xe9, 0xe3, 0x2a, 0xbc, - 0xc5, 0x8a, 0xbc, 0xc6, 0xe9, 0x2a, 0xbc, 0xc5, 0x2a, 0x2c, 0x45, 0xa3, 0xbd, 0x22, 0xe7, 0x62, - 0x15, 0x76, 0x54, 0x6b, 0x25, 0x4e, 0x77, 0xbb, 0xd8, 0x5b, 0xe4, 0xba, 0xf2, 0x7a, 0xc9, 0x80, - 0x11, 0x44, 0xbb, 0x46, 0x6f, 0x1a, 0x50, 0x34, 0x88, 0xa1, 0x6b, 0x62, 0xf8, 0xcc, 0x8f, 0x65, - 0x72, 0x9a, 0x48, 0x73, 0xc5, 0x90, 0x52, 0x35, 0xec, 0x4e, 0xb2, 0x59, 0x26, 0x3f, 0x67, 0x4a, - 0x49, 0x48, 0x6f, 0x7b, 0x40, 0xa5, 0x2d, 0x58, 0x38, 0x5e, 0xdd, 0xca, 0x9e, 0xe3, 0x48, 0xeb, - 0x64, 0xef, 0x93, 0x25, 0xa9, 0x52, 0x8c, 0x0f, 0xa4, 0xa5, 0x02, 0x8b, 0x71, 0x87, 0xdd, 0x30, - 0x27, 0x22, 0x9e, 0x75, 0x38, 0xbe, 0xe9, 0x15, 0x7f, 0x7c, 0xc0, 0x9c, 0xa6, 0x5c, 0x1d, 0x03, - 0xc9, 0x57, 0xc2, 0x94, 0x5b, 0xc2, 0x40, 0xf2, 0xac, 0xd9, 0x15, 0xe9, 0x85, 0x85, 0xb2, 0x2c, - 0x66, 0x36, 0x4d, 0x81, 0x6c, 0x8b, 0xd7, 0xce, 0xe7, 0x45, 0x48, 0x6d, 0xe6, 0xde, 0x5b, 0x6a, - 0x48, 0x2d, 0x6f, 0x54, 0xc4, 0xca, 0x4a, 0x6f, 0x63, 0xa5, 0x67, 0x32, 0x3e, 0xb5, 0xb7, 0x43, - 0x66, 0x0f, 0xaf, 0xb8, 0x1a, 0x32, 0x39, 0xf5, 0x1f, 0x7d, 0xea, 0x05, 0x7c, 0x90, 0x37, 0xaa, - 0x2f, 0x27, 0x0d, 0x53, 0xf8, 0x0c, 0xeb, 0x38, 0xcb, 0xfa, 0xce, 0xb4, 0xae, 0xb3, 0xad, 0xfd, - 0x8c, 0x6b, 0x3f, 0xeb, 0x5a, 0xcf, 0x7c, 0x31, 0x54, 0x94, 0x13, 0x11, 0xe6, 0xa7, 0x75, 0x66, - 0xf6, 0x4b, 0xfe, 0xe4, 0x92, 0x19, 0xd5, 0xb7, 0x5d, 0x60, 0x0c, 0xf3, 0xc9, 0x26, 0xf9, 0x17, - 0xea, 0x61, 0xe9, 0xbd, 0xfc, 0xb7, 0x43, 0xca, 0x17, 0xe9, 0xe0, 0x1f, 0xad, 0x89, 0xba, 0x0f, - 0xa9, 0xf5, 0x3f, 0xd6, 0xbf, 0x99, 0xab, 0x52, 0x1c, 0xb7, 0x2f, 0x7d, 0x62, 0x3b, 0xff, 0x5e, - 0x32, 0x79, 0x94, 0xcc, 0xd7, 0x92, 0x4b, 0xa3, 0x37, 0x26, 0x74, 0x11, 0x46, 0xe8, 0x33, 0xbd, - 0xad, 0xc9, 0x26, 0x25, 0xb6, 0x62, 0x37, 0xd4, 0x8a, 0xd7, 0x24, 0x41, 0x00, 0x8f, 0x6a, 0x9d, - 0xc9, 0x14, 0x9a, 0x17, 0x5d, 0x2d, 0x4d, 0x9b, 0xe8, 0xf9, 0x46, 0x72, 0xa6, 0x26, 0xe4, 0x7d, - 0xf1, 0x91, 0x75, 0xef, 0xa9, 0x99, 0x7d, 0x35, 0xdf, 0x5c, 0x17, 0xba, 0xe7, 0xc3, 0xaa, 0x45, - 0xa8, 0x68, 0xb6, 0xcf, 0xaf, 0x0d, 0x97, 0xe9, 0xc8, 0x5f, 0xd5, 0x22, 0xb5, 0xbd, 0xe7, 0x29, - 0x6f, 0x31, 0xff, 0x4b, 0xcf, 0x21, 0x70, 0x2a, 0x52, 0x65, 0xc9, 0x78, 0x7c, 0x2c, 0xb3, 0xa6, - 0xe6, 0x4f, 0x70, 0xcc, 0x5d, 0xaf, 0xa0, 0x81, 0xf5, 0x0a, 0x74, 0xca, 0x28, 0xac, 0x57, 0x80, - 0xf5, 0x0a, 0x90, 0x66, 0xc2, 0x7a, 0x05, 0xba, 0x4d, 0xc9, 0x32, 0xea, 0x15, 0x60, 0xda, 0xff, - 0xcb, 0x17, 0x63, 0xda, 0xbf, 0x16, 0xa5, 0xbe, 0x3e, 0x72, 0x0f, 0x13, 0x4a, 0x5e, 0x96, 0x7b, - 0x98, 0x50, 0x32, 0xd7, 0x4c, 0x63, 0xda, 0x7f, 0x89, 0x5c, 0x14, 0xa6, 0xfd, 0x9b, 0xd4, 0xfe, - 0x76, 0x10, 0xf1, 0x64, 0xb6, 0x72, 0xeb, 0xfd, 0x74, 0x84, 0xf5, 0xf0, 0x58, 0xa3, 0x4a, 0x05, - 0xa3, 0x52, 0x73, 0x7b, 0xac, 0x19, 0xaf, 0xee, 0xd4, 0x1a, 0xf5, 0x7f, 0xaa, 0x49, 0x93, 0x51, - 0x59, 0xdc, 0x69, 0xfd, 0x7c, 0x40, 0x74, 0x14, 0xe7, 0x3f, 0x4a, 0x26, 0x35, 0x22, 0x0c, 0x47, - 0x71, 0xae, 0xa3, 0x56, 0x50, 0xb9, 0x2d, 0xdc, 0x51, 0x3c, 0x56, 0x33, 0x9d, 0x96, 0x06, 0x57, - 0xf1, 0x4e, 0x81, 0x21, 0xce, 0x09, 0x1f, 0xd0, 0x42, 0xf1, 0xf7, 0x56, 0xe1, 0x78, 0xca, 0xe4, - 0x41, 0x4e, 0x19, 0xd7, 0xe2, 0x4f, 0xb2, 0xd2, 0xb4, 0x82, 0xfc, 0x92, 0x61, 0x66, 0xbc, 0x23, - 0x41, 0xec, 0x18, 0x9c, 0x1d, 0xb0, 0x01, 0x53, 0x52, 0xe3, 0xc0, 0x9f, 0xe9, 0x80, 0x28, 0x76, - 0x13, 0x3f, 0x6b, 0x52, 0x47, 0xa2, 0xf0, 0xa8, 0x0f, 0x1a, 0x5c, 0x5c, 0xa7, 0xe4, 0x4e, 0xff, - 0x52, 0xd4, 0x77, 0x5a, 0xad, 0xce, 0x76, 0xab, 0x55, 0xdb, 0x6e, 0x6e, 0xd7, 0x76, 0xdb, 0xed, - 0x7a, 0x27, 0x4f, 0x12, 0x0b, 0xf4, 0xd5, 0x59, 0x90, 0x2f, 0xf0, 0xba, 0xac, 0xd8, 0x8e, 0xf7, - 0xb9, 0xd0, 0x89, 0x2d, 0xec, 0x2a, 0x15, 0x22, 0x10, 0x7a, 0xb0, 0xc9, 0xd4, 0x70, 0x88, 0x4c, - 0x10, 0x99, 0x20, 0x32, 0x41, 0x64, 0x82, 0xc8, 0x04, 0x91, 0x09, 0x22, 0x13, 0x44, 0x26, 0x59, - 0x91, 0x89, 0x2b, 0x48, 0x92, 0xd7, 0xa3, 0x93, 0x3a, 0x79, 0x3e, 0x26, 0x62, 0x14, 0xc4, 0x28, - 0x88, 0x51, 0x10, 0xa3, 0x20, 0x46, 0x41, 0x8c, 0x82, 0x18, 0x05, 0x31, 0x4a, 0x56, 0x8c, 0xf2, - 0xff, 0x27, 0xfd, 0x3e, 0x15, 0x3a, 0x11, 0xca, 0xd3, 0x11, 0x11, 0x9f, 0x20, 0x3e, 0x41, 0x7c, - 0x82, 0xf8, 0x04, 0xf1, 0x09, 0xe2, 0x13, 0xc4, 0x27, 0x88, 0x4f, 0xb2, 0xe2, 0x13, 0x9f, 0xd8, - 0x93, 0xc2, 0xfc, 0x3a, 0x41, 0xca, 0x0b, 0xc3, 0x22, 0x52, 0x41, 0xa4, 0x82, 0x48, 0x05, 0x91, - 0x0a, 0x22, 0x15, 0x44, 0x2a, 0x88, 0x54, 0x10, 0xa9, 0xe4, 0x41, 0x2a, 0x21, 0x89, 0x24, 0xd5, - 0x8d, 0x53, 0x9e, 0x0c, 0x8a, 0x28, 0x05, 0x51, 0x0a, 0xa2, 0x14, 0x44, 0x29, 0x88, 0x52, 0x10, - 0xa5, 0x20, 0x4a, 0x41, 0x94, 0x92, 0x15, 0xa5, 0x04, 0x37, 0x54, 0x48, 0xf6, 0x7f, 0x5a, 0x41, - 0xca, 0xf3, 0x31, 0x11, 0xa3, 0x20, 0x46, 0x41, 0x8c, 0x82, 0x18, 0x05, 0x31, 0x0a, 0x62, 0x14, - 0xc4, 0x28, 0x88, 0x51, 0x32, 0x4d, 0x72, 0x10, 0x29, 0xcd, 0x09, 0xc7, 0x33, 0x23, 0x22, 0x3e, - 0x41, 0x7c, 0x82, 0xf8, 0x04, 0xf1, 0x09, 0xe2, 0x13, 0xc4, 0x27, 0x88, 0x4f, 0x10, 0x9f, 0x64, - 0xc6, 0x27, 0x26, 0x82, 0x52, 0x5e, 0x19, 0x17, 0xb1, 0x0a, 0x62, 0x15, 0xc4, 0x2a, 0x88, 0x55, - 0x10, 0xab, 0x20, 0x56, 0x41, 0xac, 0x82, 0x58, 0x25, 0x17, 0x56, 0xd1, 0x1b, 0x96, 0xf2, 0xe2, - 0xa8, 0x88, 0x53, 0x10, 0xa7, 0x20, 0x4e, 0x41, 0x9c, 0x82, 0x38, 0x05, 0x71, 0x0a, 0xe2, 0x94, - 0x75, 0xc6, 0x29, 0x4b, 0xdd, 0x2a, 0x5a, 0x43, 0x47, 0xa6, 0xa4, 0xd1, 0xd1, 0x87, 0x9c, 0x95, - 0x9e, 0x47, 0x0f, 0xa1, 0x44, 0x64, 0x2b, 0x3e, 0x29, 0xa0, 0x3e, 0xb9, 0xc5, 0xb7, 0x49, 0xd3, - 0xaf, 0x6f, 0xfb, 0x93, 0xc1, 0x97, 0xa0, 0x28, 0xb6, 0x13, 0x85, 0x1e, 0xbd, 0xab, 0xfa, 0x81, - 0x53, 0xa0, 0x1f, 0xc6, 0xf4, 0x20, 0xd8, 0x6d, 0xc2, 0x1c, 0x02, 0xc4, 0xd2, 0xd8, 0x0b, 0xe9, - 0x36, 0x41, 0x79, 0xe4, 0x53, 0x41, 0x72, 0xb6, 0x1e, 0x4c, 0xab, 0xbf, 0xb7, 0x72, 0x5c, 0x7b, - 0xc8, 0x23, 0xdf, 0x68, 0xa3, 0xfb, 0x0c, 0xa2, 0x82, 0xba, 0x2e, 0x4d, 0x9a, 0x1a, 0x56, 0x65, - 0x48, 0x69, 0x81, 0xae, 0x5c, 0xcf, 0x07, 0x42, 0x91, 0x81, 0x22, 0x63, 0xc5, 0x44, 0x46, 0xc4, - 0xb8, 0x6a, 0x36, 0x0a, 0x48, 0x8b, 0x3c, 0x6d, 0xb9, 0x8a, 0x59, 0x7a, 0x05, 0x4c, 0x5e, 0x1d, - 0x96, 0x9d, 0x2e, 0x8b, 0x4e, 0xbb, 0xad, 0xa0, 0xcf, 0x46, 0x28, 0xd2, 0x0f, 0x58, 0x87, 0xc5, - 0x96, 0x4e, 0x71, 0xab, 0xb1, 0xdb, 0xda, 0xed, 0x6c, 0x37, 0x76, 0xdb, 0xab, 0x3b, 0xd7, 0x6b, - 0xd4, 0xd8, 0x86, 0x72, 0xd2, 0xf7, 0x68, 0xd5, 0xf5, 0x82, 0xdb, 0x89, 0x7f, 0xb9, 0x80, 0x72, - 0x7e, 0x61, 0xb0, 0x32, 0x1b, 0xdc, 0x25, 0xcb, 0x8e, 0x1d, 0xee, 0x10, 0x40, 0xac, 0x37, 0x80, - 0xc0, 0x0e, 0x77, 0xa6, 0x41, 0xcb, 0x6c, 0x87, 0xbb, 0x3b, 0x6c, 0x5a, 0x97, 0xe3, 0x04, 0x4e, - 0xcf, 0x1f, 0xaa, 0xeb, 0x39, 0x26, 0x6f, 0x78, 0x9b, 0xf8, 0x57, 0x89, 0xe3, 0x08, 0x2a, 0x0b, - 0x74, 0xa3, 0x7b, 0x36, 0x0e, 0x2a, 0x41, 0x54, 0x82, 0x2b, 0xa6, 0x04, 0xf3, 0x6f, 0xef, 0x27, - 0x8a, 0x70, 0x27, 0x5f, 0x8b, 0x6b, 0x45, 0x05, 0xcf, 0xad, 0x98, 0x2a, 0x5f, 0x6b, 0xd5, 0x5d, - 0x52, 0x75, 0xf7, 0xaa, 0x47, 0xd7, 0x3f, 0x1a, 0x0f, 0x1b, 0xdd, 0xa7, 0x3f, 0x6f, 0xfe, 0x68, - 0x3f, 0x54, 0x40, 0x4a, 0x2f, 0x2d, 0xa2, 0x0b, 0xe5, 0x16, 0xca, 0x2d, 0x94, 0x5b, 0x28, 0xb7, - 0x4a, 0x94, 0x5b, 0x69, 0xbb, 0x7e, 0xa7, 0xaa, 0xc5, 0xe7, 0xf9, 0xca, 0x78, 0x28, 0xcd, 0x50, - 0x9a, 0xad, 0x98, 0x34, 0x43, 0xf7, 0xe7, 0x73, 0x01, 0x12, 0x06, 0x42, 0x15, 0x75, 0x82, 0xbe, - 0x3c, 0x1c, 0x8a, 0x0f, 0x14, 0x1f, 0x2b, 0x26, 0x3e, 0x98, 0x43, 0xb9, 0x62, 0xea, 0x5e, 0x50, - 0xb7, 0x88, 0xf8, 0xc8, 0xe1, 0xaa, 0xaa, 0x1c, 0x8f, 0x6f, 0xfd, 0x91, 0x48, 0x5a, 0x3c, 0x30, - 0xfe, 0xf0, 0xf2, 0x8f, 0xc3, 0xf3, 0xcf, 0x87, 0x97, 0xdf, 0x2e, 0x7a, 0x87, 0x87, 0x07, 0x79, - 0xf7, 0x4e, 0xe2, 0x83, 0x93, 0x85, 0xe2, 0x71, 0x0b, 0x32, 0x8c, 0x93, 0xf7, 0x49, 0x5e, 0xe3, - 0xdb, 0x9f, 0x9f, 0xff, 0xfb, 0xf9, 0xec, 0xaf, 0xcf, 0x95, 0x45, 0x78, 0x35, 0xb5, 0xbe, 0x48, - 0xbd, 0xf6, 0xe9, 0xe3, 0x2a, 0xbc, 0xc5, 0x8a, 0xbc, 0xc6, 0xe9, 0x2a, 0xbc, 0xc5, 0x2a, 0x2c, - 0x45, 0xa3, 0xbd, 0x22, 0xe7, 0x62, 0x15, 0x76, 0x54, 0x6b, 0x25, 0x4e, 0x77, 0xbb, 0xd8, 0x5b, - 0xe4, 0xba, 0xf2, 0xda, 0x34, 0x30, 0x32, 0x62, 0x34, 0xe8, 0xb0, 0x14, 0xd0, 0x3c, 0x40, 0xf3, - 0x00, 0xcd, 0x03, 0x34, 0x0f, 0xd0, 0x3c, 0x40, 0xf3, 0x00, 0xcd, 0x03, 0x34, 0x0f, 0xd0, 0x3c, - 0x40, 0xf3, 0x00, 0xcd, 0x83, 0xe5, 0x35, 0x0f, 0xde, 0x69, 0x5c, 0xab, 0xca, 0x5e, 0x34, 0x88, - 0x11, 0x60, 0x62, 0x3f, 0xcc, 0x0f, 0x09, 0x72, 0x5a, 0x1a, 0x1f, 0x02, 0xbb, 0xca, 0xdc, 0xee, - 0x54, 0x82, 0xec, 0xb3, 0x5f, 0x7c, 0x18, 0xa1, 0xd0, 0x6e, 0x9a, 0x2d, 0x3b, 0xfe, 0x39, 0x49, - 0x9a, 0xcd, 0x1e, 0x26, 0x2e, 0x6d, 0xc1, 0xc2, 0x71, 0xb6, 0x6f, 0x65, 0xcf, 0x71, 0xa4, 0x75, - 0xb2, 0xf7, 0xc9, 0x92, 0x54, 0x29, 0xc6, 0x07, 0xd2, 0x52, 0x81, 0xc5, 0xb8, 0xc3, 0x6e, 0x98, - 0x13, 0x11, 0xcf, 0x9a, 0xa4, 0xcf, 0x5e, 0xf1, 0xc7, 0xe7, 0xcb, 0x69, 0x10, 0xd5, 0x81, 0x19, - 0x44, 0x1e, 0x19, 0xa0, 0x41, 0xf4, 0x82, 0x41, 0x14, 0xcf, 0xcb, 0x92, 0x19, 0x44, 0x07, 0x4c, - 0xe4, 0x5b, 0x6e, 0x32, 0x18, 0x08, 0x3a, 0x20, 0x8a, 0x56, 0x99, 0x53, 0xdc, 0x18, 0x79, 0x32, - 0x5a, 0xce, 0xc9, 0x7e, 0x76, 0x3e, 0x2f, 0x42, 0x6a, 0x33, 0xf7, 0xde, 0x52, 0x43, 0x6a, 0x79, - 0xc1, 0x80, 0xd9, 0xc4, 0xb3, 0xd2, 0xdb, 0x58, 0xe9, 0x99, 0x8c, 0x4f, 0xed, 0xed, 0x90, 0xd9, - 0xc3, 0x2b, 0xae, 0x86, 0x4c, 0x4e, 0xfd, 0x47, 0x9f, 0x7a, 0x01, 0x1f, 0x60, 0x2d, 0xa1, 0x22, - 0x67, 0x5a, 0xd7, 0xd9, 0xd6, 0x7e, 0xc6, 0xb5, 0x9f, 0x75, 0xad, 0x67, 0xbe, 0x18, 0xb6, 0x58, - 0x7c, 0x2d, 0x21, 0x8f, 0x12, 0x37, 0x1f, 0x41, 0x32, 0xa3, 0xfa, 0xb6, 0x0b, 0x8c, 0xd1, 0x4b, - 0x0b, 0x6b, 0xcc, 0x81, 0x13, 0x98, 0xdb, 0x4d, 0x6a, 0x60, 0xac, 0x44, 0x61, 0x12, 0x1d, 0xd9, - 0x2e, 0xb7, 0x43, 0xca, 0x17, 0x99, 0xe8, 0x32, 0x5a, 0x13, 0x75, 0x1f, 0x52, 0xeb, 0x7f, 0xac, - 0x7f, 0x33, 0x57, 0xa5, 0x30, 0x6e, 0x5f, 0xfa, 0xc4, 0x76, 0xfe, 0xbd, 0x64, 0xf2, 0x28, 0x99, - 0xaf, 0x25, 0x97, 0x46, 0x6f, 0x4c, 0xe8, 0x42, 0x52, 0x85, 0x9f, 0xea, 0x6d, 0x4d, 0x96, 0x1d, - 0x49, 0x0a, 0x36, 0x58, 0xf1, 0x9a, 0x24, 0x08, 0xe0, 0x51, 0xad, 0x33, 0x99, 0x42, 0xf3, 0xa2, - 0xab, 0xa5, 0x69, 0x13, 0x3d, 0xdf, 0x48, 0xce, 0xd4, 0x84, 0x68, 0x28, 0x9e, 0xa5, 0x7b, 0x4f, - 0xcd, 0xec, 0xab, 0xf9, 0xe6, 0x7a, 0x41, 0x85, 0xa6, 0xc0, 0x67, 0x6a, 0xcd, 0xf5, 0xcd, 0xeb, - 0x79, 0xcd, 0xf3, 0x7c, 0x05, 0xab, 0xb4, 0x15, 0xaa, 0x9a, 0x6f, 0x17, 0xbc, 0xfd, 0xce, 0x73, - 0xc8, 0x9b, 0x8a, 0xbc, 0x65, 0xca, 0x1e, 0x52, 0xa7, 0x7a, 0xe3, 0x91, 0xf9, 0x5f, 0x37, 0x95, - 0x20, 0x4f, 0x2f, 0x9f, 0x73, 0x7e, 0xb3, 0x19, 0xec, 0x99, 0x41, 0x7e, 0x1e, 0x50, 0x3f, 0xad, - 0x4f, 0x33, 0xbc, 0x4a, 0x11, 0x01, 0x57, 0x18, 0xa5, 0x17, 0x96, 0x59, 0xcf, 0xf5, 0x5e, 0xf2, - 0xe2, 0x0b, 0xa2, 0xc4, 0xb2, 0x9a, 0xd8, 0x15, 0x7b, 0xb2, 0x2b, 0x72, 0xd2, 0x62, 0xe3, 0xeb, - 0xd7, 0x83, 0x6b, 0xca, 0xb8, 0xa5, 0xd7, 0x87, 0x6c, 0xca, 0xb6, 0xe5, 0x97, 0x9d, 0x6d, 0xb2, - 0x6d, 0x2a, 0x65, 0x36, 0x49, 0xfe, 0x0b, 0x6c, 0xf8, 0x38, 0x18, 0x92, 0x3b, 0x05, 0x0e, 0x11, - 0xb2, 0x3b, 0xf9, 0x0e, 0x19, 0x74, 0x7a, 0x27, 0xe2, 0xc5, 0x4c, 0x93, 0x54, 0xd7, 0xec, 0x16, - 0x18, 0x63, 0xfc, 0x3a, 0x0b, 0x2f, 0x13, 0x3d, 0x99, 0x94, 0x78, 0x2b, 0xe4, 0x67, 0xaf, 0x5f, - 0x9a, 0x9e, 0x8e, 0x86, 0xa1, 0xf4, 0x54, 0xd3, 0xd6, 0x37, 0x5d, 0xe9, 0x83, 0xe9, 0xac, 0xae, - 0x9d, 0x0e, 0x9a, 0x96, 0x76, 0x7e, 0xaf, 0x77, 0x5c, 0x53, 0xf5, 0x9c, 0x1f, 0x37, 0x91, 0xee, - 0xba, 0xce, 0x1a, 0x88, 0x99, 0xd9, 0x25, 0xd3, 0x58, 0x85, 0x7b, 0x66, 0xc9, 0x5a, 0xb5, 0xdd, - 0x16, 0xae, 0x5a, 0x61, 0xba, 0x43, 0xef, 0x28, 0xd7, 0xef, 0x16, 0xb8, 0xf7, 0x34, 0xca, 0xe6, - 0x7f, 0x18, 0xff, 0x47, 0xaf, 0x6c, 0xae, 0xef, 0x68, 0x18, 0xab, 0x68, 0xf2, 0xfb, 0xcc, 0x80, - 0x1b, 0xad, 0xda, 0xee, 0xd7, 0x5a, 0xb5, 0x75, 0xfd, 0xb3, 0x55, 0xfb, 0x5a, 0xab, 0xee, 0x5c, - 0x7f, 0xad, 0x55, 0x77, 0xaf, 0x7f, 0x7e, 0xad, 0x57, 0x9b, 0xa3, 0x8f, 0x3f, 0x9a, 0x0f, 0xf1, - 0x4f, 0xbb, 0xe3, 0x9f, 0xea, 0xef, 0x1b, 0xe3, 0x9f, 0x37, 0xaf, 0xae, 0xb6, 0x36, 0x0a, 0x5c, - 0xfe, 0xf3, 0xea, 0xea, 0xb7, 0xcd, 0xca, 0xa2, 0x37, 0x5c, 0xd9, 0xe5, 0xe8, 0x73, 0x22, 0x31, - 0x0d, 0xde, 0x99, 0x74, 0xac, 0x42, 0x5e, 0x1a, 0x03, 0x47, 0x2d, 0x65, 0xfe, 0x92, 0xfa, 0x02, - 0xd6, 0xff, 0x58, 0xff, 0xde, 0xdb, 0xdf, 0x3f, 0xbc, 0xb8, 0xf8, 0xb7, 0x8e, 0xc3, 0xa7, 0x91, - 0x70, 0xb7, 0xf4, 0x7b, 0x6f, 0x8c, 0x59, 0x1d, 0x2f, 0x5a, 0x1f, 0xaf, 0x4f, 0xf4, 0x52, 0xb4, - 0xec, 0xd0, 0xe9, 0xd5, 0x99, 0xd9, 0x64, 0x7b, 0x89, 0x05, 0x6f, 0x7d, 0x39, 0xd9, 0xfb, 0x6c, - 0x11, 0x29, 0xd9, 0x80, 0x53, 0xc7, 0x52, 0xc1, 0x53, 0xef, 0x83, 0xd4, 0xb5, 0x9c, 0x9a, 0x77, - 0x9d, 0x65, 0xd4, 0xdd, 0x63, 0x7c, 0x13, 0xce, 0x6c, 0xc4, 0x39, 0x17, 0x63, 0x49, 0x20, 0xcd, - 0xc3, 0x5a, 0x68, 0x98, 0x82, 0x8d, 0x49, 0xd2, 0x71, 0xee, 0x07, 0x81, 0xaa, 0x06, 0x76, 0xd5, - 0x0e, 0xfc, 0x50, 0x50, 0x29, 0xa9, 0x53, 0xf5, 0x28, 0x71, 0xb3, 0xd7, 0xb8, 0xc8, 0x3f, 0x81, - 0x79, 0x3a, 0xcd, 0x3d, 0x95, 0x8d, 0xc5, 0x19, 0xc3, 0x67, 0xe3, 0x21, 0x69, 0x88, 0xa4, 0x21, - 0x92, 0x86, 0x79, 0xf8, 0xb1, 0xf8, 0xf8, 0x54, 0x55, 0x3c, 0xa6, 0x06, 0xf6, 0xb0, 0x00, 0x5f, - 0x90, 0xb3, 0x52, 0x0f, 0x8a, 0xe5, 0x42, 0x62, 0x99, 0x27, 0x6c, 0x89, 0x26, 0x2f, 0xce, 0xf4, - 0x60, 0x28, 0x90, 0x51, 0x20, 0xa3, 0x40, 0xce, 0xb8, 0x63, 0xd0, 0x8b, 0xf3, 0x9a, 0x96, 0x42, - 0x2f, 0xce, 0xbc, 0x0f, 0x86, 0x5e, 0x9c, 0x27, 0x9b, 0x08, 0xbd, 0x38, 0xe8, 0xc5, 0xd1, 0x49, - 0x56, 0x58, 0xe8, 0xc5, 0x41, 0x2f, 0x0e, 0x7a, 0x71, 0x96, 0x93, 0x63, 0x5b, 0x2f, 0x2f, 0xce, - 0xe5, 0xf9, 0x9f, 0x9f, 0xff, 0x8b, 0x4e, 0x1c, 0x0d, 0x03, 0xff, 0xda, 0x89, 0x33, 0x9e, 0xe7, - 0xd5, 0xf7, 0xe1, 0x7c, 0x4e, 0x94, 0xee, 0xc8, 0x6d, 0xc0, 0xa4, 0x75, 0x43, 0x3c, 0xe6, 0x58, - 0x6e, 0x20, 0xe2, 0xa9, 0xe6, 0xdf, 0xad, 0x64, 0x3e, 0xd0, 0x97, 0x63, 0x76, 0x2f, 0xce, 0xec, - 0xc7, 0x8c, 0x8b, 0x82, 0x3e, 0x1d, 0x24, 0x0f, 0xcb, 0x22, 0x0f, 0x93, 0x1d, 0x98, 0x50, 0x35, - 0xb2, 0x38, 0x79, 0x38, 0x3d, 0x18, 0x92, 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, - 0x87, 0x48, 0x1e, 0x22, 0x79, 0x88, 0xe4, 0x21, 0x92, 0x87, 0xab, 0x48, 0x1e, 0x26, 0xb2, 0x59, - 0x24, 0xa2, 0x10, 0xf9, 0xc3, 0x5f, 0xf1, 0x87, 0x57, 0x57, 0x5b, 0x05, 0x06, 0xa8, 0xe0, 0x86, - 0x43, 0xb6, 0x7a, 0xad, 0xd8, 0xea, 0x65, 0xdb, 0x70, 0xfa, 0x85, 0xdc, 0xae, 0x86, 0xb1, 0xb4, - 0x40, 0x75, 0x03, 0x18, 0x34, 0xad, 0xf6, 0xa1, 0x04, 0xe3, 0x03, 0x9d, 0x9c, 0x9d, 0xc6, 0x43, - 0x6b, 0xec, 0xf0, 0x2e, 0x85, 0xca, 0x58, 0x0e, 0x29, 0xa0, 0x47, 0x1a, 0x68, 0xc6, 0xdc, 0xb8, - 0xd1, 0xb5, 0x6f, 0xf4, 0xab, 0xab, 0xdf, 0x7e, 0x16, 0xd8, 0x6d, 0x9b, 0x85, 0xf7, 0xfa, 0xa2, - 0xf1, 0x95, 0xe6, 0x8d, 0x8e, 0xce, 0xe2, 0xb9, 0xf6, 0xdd, 0x09, 0x93, 0x6a, 0x4f, 0x29, 0x51, - 0x8c, 0x7d, 0x3b, 0x65, 0xfc, 0xd0, 0xa3, 0x3e, 0xe5, 0x45, 0x6d, 0xd9, 0xd8, 0x90, 0x9f, 0x1a, - 0xa9, 0xbe, 0xd3, 0x6a, 0x75, 0xb6, 0x5b, 0xad, 0xda, 0x76, 0x73, 0xbb, 0xb6, 0xdb, 0x6e, 0xd7, - 0x3b, 0x79, 0x1a, 0x94, 0xa4, 0x83, 0x9f, 0x09, 0x87, 0x0a, 0xea, 0x7c, 0xbc, 0xaf, 0x74, 0x2d, - 0x1e, 0x79, 0x1e, 0xba, 0xe5, 0x35, 0x09, 0x6f, 0x74, 0xcb, 0xa3, 0x5b, 0xde, 0x74, 0x6a, 0xa5, - 0xe7, 0x05, 0xb7, 0xd4, 0x49, 0x5c, 0xc0, 0xd2, 0xf2, 0xc9, 0xbd, 0xd5, 0xa7, 0x96, 0x4c, 0x6a, - 0x69, 0x33, 0xfa, 0xdc, 0x17, 0x3c, 0x5d, 0xdb, 0x7e, 0x0b, 0x5d, 0xf4, 0xe5, 0xa4, 0x5b, 0xe6, - 0x5f, 0x20, 0x74, 0xd7, 0x97, 0xa8, 0x87, 0x56, 0xc9, 0x5d, 0x6f, 0xb4, 0x28, 0x5c, 0xc1, 0x89, - 0xd2, 0x52, 0x9b, 0x74, 0xba, 0xd6, 0xe7, 0x87, 0x71, 0xfd, 0xc4, 0x25, 0x68, 0xc7, 0x38, 0xaa, - 0x99, 0x9a, 0xbb, 0x10, 0x64, 0xae, 0x36, 0x27, 0x45, 0xeb, 0x40, 0x36, 0xb0, 0x0e, 0xe4, 0x42, - 0x15, 0x08, 0xd6, 0x81, 0x9c, 0x77, 0xd7, 0x60, 0x1d, 0x48, 0x0b, 0x83, 0x80, 0x34, 0x20, 0x32, - 0x0c, 0x02, 0x2a, 0x4a, 0x1d, 0x62, 0x10, 0xd0, 0xaf, 0xa6, 0x07, 0x83, 0x80, 0xb2, 0x0e, 0x8a, - 0x41, 0x40, 0x06, 0x78, 0x87, 0x69, 0xee, 0x10, 0x83, 0x80, 0xca, 0x59, 0x35, 0x0c, 0x02, 0xc2, - 0x98, 0x8c, 0x1c, 0x03, 0x62, 0x06, 0x21, 0x08, 0x8a, 0x08, 0xeb, 0x40, 0x2e, 0xd6, 0xce, 0x78, - 0xc9, 0xde, 0xc0, 0x3a, 0x90, 0x5a, 0x41, 0x03, 0xd6, 0x81, 0x9c, 0x7b, 0xe7, 0x61, 0x1d, 0xc8, - 0x32, 0x21, 0x0d, 0x30, 0x27, 0x04, 0x96, 0x4d, 0x44, 0x8e, 0x0d, 0x39, 0x36, 0x2c, 0x9b, 0x08, - 0xbb, 0x6c, 0x22, 0x56, 0x19, 0x44, 0xf9, 0x85, 0xf2, 0x6b, 0xad, 0xe4, 0x17, 0xfa, 0x08, 0x5e, - 0x13, 0xea, 0xe8, 0x23, 0x98, 0xf7, 0xc1, 0xd0, 0x47, 0xf0, 0x64, 0x13, 0xa1, 0x8f, 0x00, 0x7d, - 0x04, 0x3a, 0x4d, 0x61, 0x0b, 0x7d, 0x04, 0xe8, 0x23, 0x40, 0x1f, 0x81, 0x61, 0x06, 0x07, 0x7d, - 0x04, 0x6f, 0xf0, 0x43, 0x98, 0xce, 0x80, 0xe9, 0x0c, 0x58, 0x65, 0x70, 0x9e, 0x0d, 0x88, 0x55, - 0x06, 0x17, 0x01, 0x70, 0xd0, 0x63, 0x30, 0xbb, 0xaa, 0x58, 0x94, 0x0f, 0xb9, 0x36, 0xe4, 0xda, - 0x90, 0x6b, 0x43, 0xae, 0x0d, 0xb9, 0x36, 0xe4, 0xda, 0x90, 0x6b, 0x43, 0xae, 0x0d, 0xb9, 0xb6, - 0xac, 0xb2, 0x19, 0x8b, 0xf2, 0x61, 0x51, 0xbe, 0xb2, 0x36, 0x1c, 0x92, 0xbb, 0x58, 0x94, 0x6f, - 0x11, 0x1b, 0x0e, 0x8b, 0xf2, 0xe5, 0x99, 0x3c, 0x2c, 0xca, 0x87, 0x45, 0xf9, 0x34, 0x48, 0x03, - 0xcd, 0x98, 0x1b, 0x37, 0x3a, 0x16, 0xe5, 0xc3, 0xa2, 0x7c, 0x66, 0xee, 0x8f, 0x45, 0xf9, 0xb0, - 0x28, 0xdf, 0x5b, 0x63, 0xa1, 0x17, 0xbb, 0x80, 0x5a, 0x40, 0x2f, 0xb6, 0x19, 0x60, 0x80, 0x45, - 0xf9, 0x0a, 0x6d, 0x46, 0x2c, 0xca, 0xb7, 0x68, 0x8d, 0xbf, 0xf2, 0xde, 0xed, 0xf5, 0xaa, 0x61, - 0x37, 0x2a, 0xfd, 0x66, 0xaa, 0x84, 0xdd, 0x3b, 0x8d, 0x73, 0x98, 0x77, 0xee, 0xb4, 0xcf, 0x59, - 0x25, 0x53, 0x61, 0x3e, 0x11, 0xd9, 0x8a, 0x8f, 0xc5, 0xf3, 0xf1, 0x64, 0xe4, 0x6f, 0x87, 0xe3, - 0x91, 0xbf, 0x5d, 0x8c, 0x47, 0xfe, 0x32, 0xb7, 0x23, 0xfa, 0xed, 0x49, 0xfd, 0xf5, 0x37, 0xde, - 0x98, 0xee, 0xca, 0x5e, 0x34, 0x88, 0xa5, 0x15, 0x75, 0xe6, 0xc2, 0x4e, 0xf3, 0xad, 0x43, 0xaa, - 0xa0, 0x3e, 0x04, 0x76, 0x95, 0xb9, 0xdd, 0xa9, 0xd9, 0x7e, 0xf6, 0x8b, 0xf8, 0x67, 0xaa, 0x86, - 0xdd, 0xc9, 0xd4, 0xcf, 0x39, 0xd9, 0xcf, 0xd4, 0x6a, 0x65, 0xcf, 0x71, 0xc6, 0x19, 0xc6, 0x92, - 0x2a, 0xc5, 0xf8, 0x40, 0x5a, 0x2a, 0xb0, 0x18, 0x77, 0xd8, 0x0d, 0x73, 0x22, 0xe2, 0x59, 0x93, - 0x05, 0x98, 0x96, 0xb1, 0xf3, 0xde, 0x2b, 0x5b, 0xe5, 0xc3, 0xcc, 0xc1, 0x22, 0x79, 0x82, 0x43, - 0x0a, 0x04, 0x83, 0xe4, 0x55, 0xd9, 0x85, 0x83, 0x3d, 0x0a, 0x6b, 0xdd, 0x62, 0xc1, 0x1c, 0x7a, - 0x85, 0x53, 0xd6, 0x4a, 0x85, 0x95, 0xa7, 0x22, 0x25, 0x7f, 0xe9, 0xce, 0x9c, 0x92, 0xe9, 0xa5, - 0x43, 0x73, 0xc8, 0x6d, 0x2f, 0x90, 0x8c, 0x0f, 0x2c, 0x3b, 0xe0, 0x8a, 0x30, 0x4e, 0x45, 0x82, - 0x48, 0x46, 0xf1, 0x77, 0x29, 0xaa, 0x1e, 0xc3, 0x15, 0xfb, 0x8a, 0x3b, 0x44, 0x11, 0x2b, 0xe0, - 0xe9, 0x61, 0x9a, 0x0a, 0xc6, 0xdb, 0xb2, 0xac, 0xcb, 0x21, 0x95, 0xd4, 0x22, 0x82, 0x26, 0x83, - 0x48, 0x45, 0xb8, 0x43, 0x84, 0x73, 0xc5, 0x4f, 0x1a, 0xef, 0xad, 0xf4, 0xb1, 0xa5, 0xba, 0xf7, - 0x46, 0x11, 0x7e, 0x99, 0x31, 0x68, 0xe1, 0x0a, 0xa4, 0x35, 0xac, 0x40, 0xba, 0x50, 0xb4, 0xbc, - 0x90, 0x0a, 0xa4, 0x0b, 0x92, 0x0f, 0x05, 0x88, 0x8d, 0x7c, 0x44, 0x46, 0xb1, 0x3d, 0xca, 0xdc, - 0xae, 0xba, 0x0f, 0x13, 0xe3, 0x99, 0xb9, 0x2a, 0xd5, 0xc6, 0xfb, 0xd2, 0x27, 0xb6, 0xf3, 0xef, - 0x05, 0xef, 0xde, 0x02, 0x8c, 0x84, 0xb1, 0xbd, 0xfb, 0xc6, 0x84, 0x95, 0x12, 0x64, 0xab, 0x83, - 0x5a, 0x98, 0x2a, 0x99, 0x93, 0xc4, 0x5e, 0xc7, 0x73, 0xfd, 0xb4, 0x32, 0x8b, 0xc5, 0x64, 0x2a, - 0xf0, 0xf3, 0xae, 0x82, 0x06, 0x96, 0x40, 0x3f, 0x2b, 0xa0, 0x95, 0x05, 0x78, 0x56, 0xf1, 0x66, - 0x9e, 0xb9, 0x5c, 0x4e, 0x03, 0xf7, 0x9d, 0x5e, 0x03, 0xbd, 0xa8, 0xf5, 0x72, 0xfd, 0x96, 0xf5, - 0x92, 0xcd, 0x48, 0xd4, 0x60, 0x1c, 0xce, 0xb1, 0xe3, 0xde, 0x34, 0x03, 0x7f, 0xbd, 0xf6, 0xaf, - 0xcf, 0xc8, 0x2f, 0xa4, 0x44, 0x65, 0x18, 0x78, 0x4e, 0x55, 0x31, 0xff, 0xed, 0x63, 0x96, 0x9e, - 0xf9, 0xc7, 0x4b, 0xde, 0x98, 0xe5, 0xf9, 0x90, 0xd7, 0xdc, 0x48, 0x2b, 0x0b, 0xb2, 0x7a, 0xaa, - 0xa5, 0xe6, 0x99, 0xfc, 0x8c, 0xc2, 0x26, 0x37, 0x4e, 0xca, 0x2d, 0x3f, 0x66, 0x75, 0x49, 0xc5, - 0xb0, 0x8d, 0x3f, 0xaf, 0xb5, 0x52, 0xb1, 0x27, 0x2b, 0x98, 0xd1, 0xce, 0x1f, 0x5f, 0xb7, 0x1a, - 0x06, 0xf5, 0x5c, 0xdb, 0x6c, 0xf5, 0xcc, 0xe9, 0x79, 0xb6, 0xe1, 0x92, 0x18, 0xd3, 0x4e, 0x70, - 0x5b, 0xc0, 0x86, 0x4e, 0xae, 0xce, 0x6c, 0x3a, 0xbb, 0x24, 0xf2, 0x54, 0x2e, 0xff, 0x62, 0xa5, - 0x96, 0x4d, 0xd7, 0x5f, 0xe7, 0xb3, 0x8b, 0x6b, 0xc0, 0xec, 0xe2, 0x4c, 0xc7, 0x6c, 0x7d, 0xac, - 0xe2, 0x2c, 0xc7, 0x30, 0x27, 0xc6, 0xcb, 0xb8, 0xde, 0xb9, 0x13, 0x91, 0x1e, 0x13, 0x90, 0x18, - 0x57, 0xcd, 0x46, 0x9e, 0xe5, 0x1e, 0xef, 0xed, 0xed, 0x1c, 0x97, 0x16, 0x4b, 0xa5, 0x29, 0x16, - 0xf8, 0x51, 0x3c, 0xb5, 0x6e, 0x92, 0x67, 0x51, 0x30, 0x07, 0x42, 0x7b, 0x52, 0x85, 0xbe, 0x24, - 0x8a, 0x87, 0x62, 0x11, 0x31, 0xfa, 0xa6, 0xb8, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, 0x1b, 0xbb, - 0xed, 0xd5, 0x9d, 0xeb, 0x92, 0x8c, 0xcd, 0xeb, 0xa5, 0xf6, 0xa6, 0x6a, 0x6b, 0x99, 0x66, 0xa6, - 0xab, 0x57, 0x14, 0xe6, 0xc7, 0x34, 0x51, 0x88, 0x88, 0x06, 0x11, 0x0d, 0x22, 0x1a, 0x44, 0x34, - 0x88, 0x68, 0x10, 0xd1, 0x20, 0xa2, 0x41, 0x44, 0xf3, 0x80, 0x41, 0x5e, 0x2f, 0xf2, 0xf8, 0x29, - 0xe9, 0x9d, 0xa9, 0x9f, 0xeb, 0x1c, 0x7e, 0x8c, 0xb9, 0xfc, 0x02, 0x59, 0xfa, 0xb6, 0xe6, 0xea, - 0xd7, 0x9a, 0x9b, 0x5c, 0x6d, 0x20, 0xb9, 0x8a, 0xe4, 0x2a, 0x92, 0xab, 0x68, 0x8a, 0xa0, 0x29, - 0x82, 0xa6, 0x08, 0x9a, 0x22, 0x68, 0x8a, 0xa0, 0x29, 0x02, 0xdb, 0x14, 0x41, 0x8e, 0x12, 0x81, - 0x01, 0x02, 0x03, 0x04, 0x06, 0x08, 0x0c, 0x10, 0x18, 0x20, 0x30, 0x40, 0x60, 0xb0, 0xce, 0x54, - 0x5f, 0x86, 0xb4, 0x57, 0xe3, 0xf9, 0x96, 0xa5, 0x45, 0x2c, 0xcf, 0x1b, 0xde, 0x6b, 0xfd, 0x2a, - 0x64, 0xf9, 0x8f, 0xc0, 0x73, 0x2e, 0xe3, 0x31, 0x0c, 0x84, 0x2c, 0x8f, 0xef, 0x36, 0x67, 0xb4, - 0x72, 0xf2, 0xed, 0xf9, 0x02, 0x95, 0x6b, 0x18, 0xa8, 0xac, 0x03, 0x34, 0x95, 0x1f, 0xa8, 0x3c, - 0x37, 0xe8, 0x49, 0x67, 0xdb, 0xa3, 0xc4, 0x15, 0x74, 0xae, 0xf9, 0x9e, 0x30, 0xe3, 0x73, 0xc0, - 0x9a, 0x4a, 0x6f, 0x7c, 0xde, 0xb6, 0xb6, 0xc6, 0x6e, 0x82, 0x0f, 0xc9, 0xf6, 0x33, 0x70, 0x08, - 0x44, 0x10, 0xa9, 0x79, 0xd3, 0x42, 0xd3, 0xb7, 0x9e, 0xbe, 0x08, 0x46, 0xec, 0xfe, 0x9c, 0x59, - 0x90, 0xf0, 0x0e, 0xc5, 0x7c, 0x59, 0x8c, 0x18, 0xbf, 0x8f, 0x09, 0xf1, 0xda, 0x8d, 0x59, 0xd0, - 0x09, 0xf1, 0xc5, 0xf2, 0xe0, 0xf3, 0xa4, 0xbf, 0x03, 0x65, 0x6c, 0x30, 0x7f, 0x5c, 0xcb, 0x76, - 0x07, 0xc3, 0xda, 0xe4, 0x6c, 0xd6, 0x51, 0xa4, 0x02, 0x70, 0xb1, 0x8a, 0xbf, 0x3a, 0x3a, 0x94, - 0x30, 0xae, 0xea, 0x1d, 0x0d, 0x2d, 0x4a, 0x0a, 0xf4, 0xe0, 0xd0, 0xd4, 0x7b, 0x43, 0x43, 0x05, - 0x41, 0x9d, 0xbd, 0x36, 0x74, 0x51, 0x5a, 0xc6, 0xe8, 0x16, 0xfd, 0xb4, 0x8b, 0x06, 0xaa, 0x4b, - 0x2b, 0xe5, 0x35, 0xb3, 0x14, 0x9d, 0x76, 0xbb, 0xd9, 0x5e, 0xbf, 0xe5, 0x58, 0x87, 0xda, 0xb1, - 0x1a, 0x64, 0x61, 0xe1, 0xa2, 0xcf, 0x8f, 0x45, 0x9e, 0x31, 0x46, 0x12, 0x63, 0x24, 0xf3, 0x30, - 0x87, 0x53, 0xf4, 0xc2, 0x02, 0xa2, 0x24, 0x59, 0x78, 0xd3, 0xca, 0x6e, 0xc2, 0x26, 0x57, 0xad, - 0x48, 0x02, 0x7a, 0xb8, 0x9e, 0x31, 0x92, 0x21, 0x18, 0xe3, 0x95, 0x38, 0x4e, 0x22, 0x4a, 0x64, - 0x7e, 0x0b, 0xf6, 0x71, 0x88, 0xf5, 0x28, 0x83, 0xc6, 0x42, 0x34, 0x62, 0x0b, 0x6e, 0xfa, 0x72, - 0x4c, 0xd8, 0xac, 0x87, 0xe1, 0xf9, 0xa1, 0x28, 0x5e, 0x8b, 0x6a, 0x32, 0x50, 0xb1, 0x66, 0xaf, - 0xf5, 0x15, 0x69, 0xf6, 0x9a, 0xeb, 0xe0, 0xe8, 0x3a, 0x40, 0xda, 0x0f, 0x92, 0xf6, 0x03, 0xa5, - 0xf3, 0x60, 0x15, 0x33, 0x36, 0xf2, 0x36, 0x41, 0xc8, 0x7b, 0xe0, 0xd2, 0x01, 0x32, 0xb2, 0xfe, - 0x6f, 0x6e, 0xba, 0x4c, 0xde, 0x00, 0x43, 0xc7, 0x50, 0xdb, 0x71, 0xd4, 0x79, 0x2c, 0xb5, 0x1f, - 0x4f, 0xdd, 0xc7, 0xd4, 0xd8, 0x71, 0x35, 0x76, 0x6c, 0x4d, 0x1c, 0x5f, 0x4d, 0x8c, 0x43, 0xc1, - 0xfd, 0x56, 0xf4, 0x58, 0x4f, 0xd9, 0x43, 0xfa, 0x3b, 0x47, 0x68, 0xd9, 0xb5, 0x56, 0xf1, 0xd6, - 0xea, 0xc6, 0x8e, 0xbb, 0x89, 0x63, 0x6f, 0xec, 0xf8, 0x9b, 0x12, 0x03, 0xc6, 0xc5, 0x81, 0x71, - 0xb1, 0x60, 0x52, 0x3c, 0xe8, 0x11, 0x13, 0x9a, 0xc4, 0x45, 0xfa, 0xa2, 0x85, 0xdb, 0xbe, 0xff, - 0x92, 0x21, 0xa9, 0x8e, 0xb1, 0x75, 0x95, 0x07, 0xd5, 0xff, 0x0b, 0x38, 0x5d, 0xdf, 0xde, 0x72, - 0x1b, 0x69, 0x1f, 0xb7, 0x71, 0xe7, 0xb6, 0x9f, 0xf5, 0xe4, 0x9f, 0xd1, 0xe7, 0x46, 0xd2, 0xf2, - 0x6d, 0xfc, 0xb9, 0xfd, 0xb5, 0x56, 0x6d, 0x27, 0xfd, 0xe0, 0x36, 0x7f, 0x34, 0x1f, 0xb2, 0x5f, - 0xb8, 0xf1, 0xaf, 0xaf, 0x57, 0x57, 0xe1, 0x8f, 0xcf, 0x0f, 0xf1, 0xdf, 0x27, 0x0f, 0xd7, 0xff, - 0xd9, 0xfc, 0x5d, 0xf7, 0xf9, 0x8b, 0x6f, 0x78, 0x75, 0xb5, 0x75, 0xfd, 0xdb, 0x8a, 0x36, 0x57, - 0x2c, 0xca, 0x02, 0xbf, 0x3a, 0xae, 0x36, 0x76, 0xd8, 0x9c, 0x74, 0xd1, 0xe1, 0xc7, 0x1a, 0x49, - 0xfd, 0xaa, 0x47, 0xf9, 0x20, 0xa1, 0x83, 0x35, 0xc3, 0x89, 0xa7, 0xc3, 0x23, 0xb2, 0x40, 0x64, - 0x81, 0xc8, 0x62, 0x8d, 0x90, 0x45, 0xc4, 0xb8, 0xda, 0x31, 0x00, 0x25, 0xda, 0x1a, 0x87, 0xd4, - 0x13, 0xdd, 0xf1, 0xfc, 0x8f, 0xde, 0xd3, 0x64, 0xe9, 0x8e, 0xfe, 0x98, 0x19, 0x5c, 0x73, 0x34, - 0xc8, 0xcc, 0xf8, 0xa6, 0xc2, 0x11, 0x66, 0xb7, 0x9e, 0xee, 0xf0, 0x04, 0x43, 0xa7, 0xee, 0xe9, - 0xd2, 0x92, 0x3b, 0xf3, 0x4b, 0xdb, 0x6c, 0xe0, 0xda, 0x96, 0x22, 0x97, 0xf5, 0x8f, 0x86, 0x90, - 0x7b, 0x35, 0xba, 0x5e, 0x16, 0xf5, 0x64, 0xe8, 0x9d, 0x78, 0x4d, 0x81, 0x20, 0x2c, 0xbc, 0x69, - 0x7d, 0x48, 0xbd, 0xd6, 0x93, 0x4f, 0x99, 0xe2, 0x43, 0xf4, 0x4f, 0x77, 0x91, 0x74, 0x56, 0x0d, - 0xbc, 0xaa, 0x3e, 0x3e, 0x55, 0x93, 0xb5, 0x83, 0xee, 0x92, 0xa5, 0xb2, 0x62, 0xd0, 0x5d, 0x52, - 0xbe, 0x75, 0x92, 0x23, 0x35, 0x70, 0xde, 0xc3, 0x59, 0xdf, 0xd6, 0x30, 0xd6, 0x54, 0x6a, 0x61, - 0xb2, 0x70, 0xdd, 0x71, 0x82, 0xe1, 0xe8, 0x87, 0xa2, 0x0b, 0xb9, 0x18, 0x51, 0x9a, 0xad, 0xb0, - 0xe1, 0x9b, 0x2b, 0x97, 0xa5, 0xe0, 0xe1, 0x9b, 0x6b, 0xa6, 0x4b, 0xa0, 0x36, 0x50, 0xa0, 0xa2, - 0x40, 0x05, 0x24, 0x50, 0xd1, 0xff, 0xbc, 0x48, 0xfc, 0x64, 0xe2, 0xd8, 0x1b, 0x3b, 0xfe, 0xa6, - 0xc4, 0x80, 0x71, 0x71, 0x60, 0x5c, 0x2c, 0x98, 0x14, 0x0f, 0x7a, 0xf9, 0x03, 0xf4, 0x3f, 0xa3, - 0xff, 0x19, 0xfd, 0xcf, 0x26, 0xb8, 0x20, 0x0d, 0xf0, 0x2a, 0x10, 0x6c, 0xa0, 0x33, 0xa9, 0x33, - 0x55, 0x00, 0xa3, 0x71, 0x51, 0x95, 0xa2, 0x2a, 0x45, 0x55, 0xba, 0x56, 0xaa, 0x34, 0x55, 0xa4, - 0x5a, 0x45, 0xc0, 0x13, 0x3d, 0xda, 0xd2, 0x38, 0xe6, 0x21, 0x8f, 0x7c, 0x8c, 0xa9, 0xc9, 0xb4, - 0xc6, 0x18, 0x53, 0x83, 0x22, 0x1e, 0x45, 0xfc, 0xda, 0x8a, 0x78, 0x8c, 0xa9, 0xd1, 0xb8, 0x1f, - 0x31, 0xa6, 0x66, 0xae, 0xad, 0x87, 0x31, 0x35, 0xaf, 0x2c, 0x2d, 0xc6, 0xd4, 0x94, 0x24, 0x97, - 0xf5, 0x8f, 0x76, 0x8d, 0x21, 0x25, 0xd0, 0x42, 0x4a, 0x32, 0x54, 0x6b, 0xd6, 0x3f, 0xdb, 0x45, - 0xdc, 0xa0, 0x37, 0x42, 0x68, 0x8c, 0x29, 0x49, 0x46, 0xc3, 0x24, 0xdc, 0xd2, 0x70, 0x3d, 0x3a, - 0x41, 0xd1, 0x09, 0xfa, 0xcb, 0xa3, 0x5d, 0x1d, 0x88, 0x20, 0x32, 0xe0, 0x0c, 0x9d, 0x1a, 0x5b, - 0xaf, 0x99, 0x5f, 0x47, 0x33, 0x1f, 0xcd, 0x7c, 0x34, 0xf3, 0x8b, 0xbf, 0xa8, 0x2e, 0x31, 0x92, - 0x0e, 0xa8, 0xa9, 0x64, 0xc7, 0xab, 0x87, 0x40, 0x4b, 0x09, 0x0f, 0xc3, 0x62, 0xc5, 0x98, 0x78, - 0x31, 0x29, 0x66, 0x8c, 0x8b, 0x1b, 0xd3, 0x62, 0xa7, 0x34, 0xf1, 0x53, 0x9a, 0x18, 0x2a, 0x43, - 0x1c, 0x19, 0xb2, 0x72, 0x35, 0xef, 0x77, 0xdd, 0x62, 0x2a, 0x1d, 0x98, 0xd8, 0x36, 0x0d, 0x55, - 0xd5, 0x0f, 0x1c, 0x83, 0x1b, 0x32, 0x2d, 0xff, 0x35, 0x75, 0x33, 0x43, 0x3b, 0xa5, 0x48, 0x63, - 0xc1, 0xb9, 0x6f, 0x92, 0xf0, 0x2c, 0x15, 0x23, 0xe3, 0x5f, 0x1b, 0x9a, 0x17, 0xbd, 0xee, 0xa1, - 0xd2, 0x04, 0x7d, 0x19, 0x02, 0xbf, 0x34, 0xc1, 0x5f, 0x96, 0x02, 0x28, 0x5d, 0x11, 0x94, 0xae, - 0x10, 0xca, 0x54, 0x0c, 0x66, 0x14, 0x84, 0x21, 0x45, 0x91, 0x4e, 0x8c, 0x76, 0xf7, 0xd5, 0xab, - 0xa7, 0xa5, 0x1f, 0x04, 0x1e, 0x25, 0xdc, 0xe4, 0x79, 0x99, 0xa0, 0xd3, 0x3a, 0xa8, 0x25, 0x30, - 0x94, 0x65, 0x39, 0x73, 0x1f, 0xe3, 0x59, 0x97, 0xe6, 0x4f, 0x82, 0x09, 0xf7, 0x11, 0x71, 0x6e, - 0xa8, 0x50, 0x4c, 0xd2, 0x58, 0x3e, 0x8c, 0xc8, 0xeb, 0x1b, 0xe2, 0x95, 0x00, 0x72, 0x5e, 0xbe, - 0x2f, 0x64, 0xbc, 0x53, 0xaf, 0xd5, 0x10, 0xed, 0x20, 0xda, 0x41, 0xb4, 0x83, 0x68, 0x67, 0xdd, - 0xd1, 0x4e, 0xe1, 0x7e, 0x46, 0xf3, 0xca, 0xae, 0x8e, 0xc1, 0x5b, 0x98, 0x89, 0xee, 0x79, 0xfe, - 0xc7, 0xec, 0x71, 0xb7, 0x4c, 0x47, 0xff, 0xcc, 0xdc, 0x6c, 0x12, 0x32, 0x52, 0x7f, 0x5f, 0xce, - 0xfd, 0xca, 0x8a, 0x20, 0x99, 0xdd, 0xeb, 0xa6, 0x23, 0x4a, 0x4a, 0x12, 0x0b, 0x4f, 0xb7, 0x0a, - 0xb9, 0x2b, 0x7f, 0xab, 0xb4, 0x6a, 0xbb, 0x6d, 0xdc, 0x2d, 0x20, 0x54, 0x93, 0xf9, 0xd1, 0xaf, - 0xd1, 0x7a, 0x45, 0xeb, 0x75, 0xde, 0x69, 0x09, 0x05, 0xa5, 0x7e, 0xa8, 0xcc, 0x9b, 0xab, 0x93, - 0x1b, 0x41, 0xb6, 0x4f, 0x63, 0xe8, 0x8d, 0x06, 0x2a, 0x1a, 0xa8, 0x68, 0xa0, 0xa2, 0x81, 0xba, - 0xee, 0x06, 0x2a, 0xd2, 0xf1, 0x08, 0x68, 0x96, 0x18, 0xd0, 0x54, 0x1d, 0xea, 0x91, 0xfb, 0xd2, - 0x60, 0xcd, 0xf8, 0x76, 0x90, 0xc1, 0x0d, 0x52, 0xef, 0x88, 0x6c, 0x10, 0xd9, 0x20, 0xb2, 0x59, - 0x7b, 0x64, 0x83, 0xd4, 0xfb, 0xdc, 0x7f, 0x56, 0x95, 0x7a, 0xaf, 0x21, 0x99, 0x0a, 0x43, 0x2c, - 0x3c, 0xdd, 0x2a, 0x8b, 0xa0, 0xde, 0x9b, 0x9d, 0x1a, 0xee, 0x16, 0x18, 0xaa, 0xc9, 0xfc, 0xe8, - 0x48, 0xbd, 0xa3, 0xa5, 0x9a, 0xc1, 0x52, 0x65, 0x81, 0x60, 0xaa, 0x14, 0x23, 0x75, 0x7c, 0x27, - 0x0c, 0x0e, 0x43, 0x0b, 0x15, 0x2d, 0x54, 0xb4, 0x50, 0xd1, 0x42, 0x05, 0x6f, 0xa1, 0xee, 0x94, - 0x60, 0xa0, 0xb6, 0xd1, 0x40, 0x5d, 0x52, 0x03, 0x15, 0x63, 0xc3, 0xd0, 0x40, 0x9d, 0x73, 0xab, - 0x34, 0xda, 0x2d, 0xdc, 0x2c, 0x68, 0x9f, 0xa2, 0x7d, 0x8a, 0xf6, 0x69, 0xb6, 0x69, 0xb9, 0x61, - 0x42, 0x45, 0xc4, 0x9b, 0xd4, 0x09, 0x36, 0x6f, 0xa6, 0x3e, 0xbf, 0x21, 0xda, 0x65, 0x68, 0x97, - 0xa1, 0x5d, 0x86, 0x76, 0x19, 0x18, 0xbb, 0xec, 0xb1, 0xa8, 0x7a, 0x19, 0x61, 0x51, 0xbb, 0x06, - 0xef, 0x31, 0x9e, 0x33, 0xf0, 0xc6, 0xd9, 0x4b, 0x9d, 0x63, 0x2a, 0x25, 0x20, 0x7d, 0x03, 0x9d, - 0x64, 0x5e, 0xd7, 0x07, 0x86, 0x3a, 0xcc, 0xbc, 0x7a, 0xc3, 0x45, 0x77, 0x9e, 0x31, 0xfe, 0x96, - 0xd7, 0xef, 0x00, 0x5b, 0x9a, 0xe5, 0x9e, 0xaa, 0x0e, 0x9e, 0x2a, 0x6d, 0xa7, 0xaa, 0xfb, 0x33, - 0xde, 0xfb, 0xa4, 0xea, 0xee, 0x55, 0x8f, 0xae, 0x7f, 0xd4, 0xde, 0xb7, 0x1e, 0x36, 0xbb, 0x9b, - 0x1b, 0xcf, 0x7f, 0xd7, 0xdd, 0xfc, 0x51, 0x7b, 0xdf, 0x7e, 0xd8, 0xd8, 0x78, 0xe1, 0x7f, 0x7e, - 0x7f, 0x69, 0x8c, 0xcd, 0x9f, 0x1b, 0x1b, 0x1b, 0xe3, 0xf3, 0xf4, 0xe4, 0x8c, 0x7d, 0xad, 0xd5, - 0xaf, 0x7f, 0x4f, 0x3e, 0x8e, 0xfe, 0x4e, 0x4f, 0xe9, 0x5c, 0x5f, 0xde, 0x2c, 0xa1, 0x2b, 0xd4, - 0xaf, 0x44, 0xd0, 0xff, 0x76, 0xaf, 0xff, 0xd3, 0xdd, 0xfc, 0xd1, 0x79, 0x98, 0x7c, 0x4e, 0xfe, - 0xde, 0xfc, 0xb9, 0xb1, 0xf5, 0xdb, 0xd5, 0xd5, 0xd6, 0xd6, 0x6f, 0x9b, 0xa3, 0x17, 0x1f, 0x7f, - 0xef, 0xb7, 0xd1, 0xff, 0xfe, 0xde, 0xed, 0xce, 0xfc, 0x6a, 0x73, 0xe3, 0x5f, 0x5b, 0xab, 0x20, - 0x56, 0x90, 0x35, 0x48, 0xb6, 0xc6, 0x09, 0x93, 0x6a, 0x4f, 0x29, 0x61, 0x16, 0xf2, 0x9d, 0x32, - 0x7e, 0xe8, 0x25, 0xa5, 0x37, 0x0c, 0x13, 0x5d, 0x95, 0x53, 0x72, 0x37, 0x75, 0xa7, 0xfa, 0x4e, - 0xab, 0xd5, 0xd9, 0x6e, 0xb5, 0x6a, 0xdb, 0xcd, 0xed, 0xda, 0x6e, 0xbb, 0x5d, 0xef, 0xd4, 0x4d, - 0xb2, 0xf4, 0x67, 0xc2, 0xa1, 0x82, 0x3a, 0x1f, 0xef, 0x2b, 0x5d, 0x8b, 0x47, 0x9e, 0x87, 0xfc, - 0x11, 0xf2, 0x47, 0x59, 0xf9, 0xa3, 0xa4, 0x5e, 0xbb, 0xa8, 0x32, 0xa7, 0x3c, 0x06, 0xe9, 0xf1, - 0x96, 0xc8, 0x21, 0x21, 0x87, 0x84, 0x1c, 0x12, 0x72, 0x48, 0x60, 0x38, 0x24, 0xf4, 0xed, 0x2f, - 0x91, 0xa1, 0x8b, 0xbe, 0x7d, 0x23, 0x5b, 0x1d, 0x7d, 0xfb, 0x9a, 0xb6, 0x4a, 0xa3, 0x8d, 0x65, - 0x5f, 0xe0, 0xd8, 0xd1, 0x68, 0xa5, 0xa3, 0x6d, 0xb6, 0xf0, 0x11, 0x75, 0x57, 0x8c, 0x37, 0xbc, - 0x90, 0x66, 0xfb, 0x84, 0xdd, 0x08, 0x11, 0x7e, 0x78, 0x6c, 0x9e, 0xf3, 0x61, 0xdc, 0xf4, 0x62, - 0x49, 0x1b, 0xd1, 0x69, 0x5c, 0xba, 0x4a, 0x3a, 0x4d, 0x55, 0x25, 0x88, 0xfd, 0x9d, 0x71, 0x83, - 0xad, 0x44, 0x5e, 0xb8, 0x17, 0xb6, 0x15, 0xc1, 0xb6, 0x22, 0x8b, 0x36, 0xb3, 0xb1, 0xad, 0x48, - 0x69, 0x4a, 0xc2, 0x58, 0x5b, 0x11, 0x43, 0x5d, 0x90, 0x66, 0x0e, 0x93, 0x91, 0x6e, 0x48, 0x86, - 0xc5, 0x97, 0x71, 0x31, 0x56, 0x86, 0x38, 0x2b, 0x4d, 0xac, 0x95, 0x25, 0xde, 0x4a, 0x17, 0x73, - 0xa5, 0x8b, 0xbb, 0x32, 0xc5, 0x9e, 0x59, 0xb3, 0xca, 0x94, 0xf1, 0x63, 0x4a, 0x1c, 0xa6, 0x37, - 0x98, 0x24, 0x7c, 0x56, 0x1d, 0x6a, 0x0b, 0x3a, 0x5e, 0x03, 0xc3, 0xfb, 0xf9, 0x79, 0xb2, 0xe9, - 0xd4, 0xbd, 0x0d, 0xef, 0xb3, 0x32, 0xd2, 0x4f, 0xd3, 0x9b, 0xd5, 0xcc, 0xc6, 0x09, 0x5c, 0x1b, - 0x9e, 0x2b, 0xb3, 0x8e, 0xab, 0xd2, 0x54, 0x4e, 0x99, 0xaa, 0xa7, 0x74, 0x15, 0x54, 0xb6, 0x2a, - 0x5a, 0x98, 0x4a, 0x5a, 0x98, 0x6a, 0x5a, 0x84, 0x8a, 0x32, 0xab, 0xaa, 0x0c, 0xab, 0xac, 0x74, - 0xc2, 0x8c, 0x3b, 0xc2, 0x66, 0x4e, 0x9b, 0x69, 0x87, 0xd8, 0x73, 0xd1, 0x58, 0x02, 0xa3, 0x5e, - 0x92, 0x83, 0x6c, 0xf2, 0xa7, 0x1c, 0xe9, 0x61, 0x95, 0xed, 0x30, 0x4b, 0x6f, 0x5a, 0x72, 0xd5, - 0xa6, 0xf4, 0xbe, 0x8b, 0xf2, 0x89, 0x3c, 0x1e, 0x91, 0xb2, 0x7d, 0x23, 0x25, 0x49, 0x99, 0xa7, - 0x5b, 0xaa, 0x44, 0xc7, 0xda, 0xcc, 0x96, 0x2a, 0x2d, 0x79, 0x16, 0x37, 0x95, 0x61, 0xc5, 0x58, - 0xde, 0x5d, 0x40, 0x67, 0x0f, 0x94, 0xe5, 0x98, 0x4b, 0xef, 0x57, 0xba, 0x83, 0xce, 0xfc, 0x46, - 0x30, 0xb8, 0x44, 0x95, 0xc4, 0x83, 0xf2, 0xe8, 0xfa, 0x2a, 0xcf, 0xac, 0x7f, 0x7e, 0x63, 0xb4, - 0x53, 0xd1, 0x4e, 0x45, 0x3b, 0x15, 0xed, 0x54, 0xb4, 0x53, 0xc7, 0xa7, 0x2d, 0xd6, 0x5a, 0x82, - 0xba, 0x65, 0xe6, 0xc1, 0x6d, 0x97, 0x93, 0x07, 0x37, 0x8e, 0xbc, 0xb0, 0xab, 0xcc, 0xed, 0x4e, - 0x45, 0x5a, 0x3c, 0xfb, 0xc5, 0xf8, 0x67, 0x1e, 0x4f, 0x07, 0x22, 0xa0, 0x35, 0x47, 0x40, 0x18, - 0x8b, 0xf6, 0xc2, 0x7d, 0x4a, 0x0d, 0x65, 0x9a, 0x0d, 0xba, 0x31, 0x12, 0xdd, 0x64, 0x6e, 0xc5, - 0x4d, 0xa4, 0x24, 0x49, 0x45, 0x14, 0x35, 0x1f, 0x2d, 0x30, 0xba, 0x0d, 0xf0, 0x60, 0x81, 0x06, - 0x06, 0x0b, 0x2c, 0x0d, 0xf2, 0xc5, 0x60, 0x81, 0xf5, 0xd5, 0x4e, 0x18, 0x2c, 0xa0, 0x77, 0x3a, - 0x31, 0x58, 0x00, 0x49, 0x18, 0x24, 0x61, 0x90, 0x84, 0x41, 0x12, 0x06, 0x83, 0x05, 0x0a, 0x8b, - 0x46, 0x0c, 0x16, 0x28, 0xf0, 0x62, 0x18, 0x2c, 0x50, 0xe6, 0x03, 0x60, 0xb0, 0x80, 0xe9, 0x2d, - 0x85, 0xc1, 0x02, 0x18, 0x2c, 0x90, 0x19, 0xc2, 0xa3, 0x8f, 0x7b, 0x66, 0x53, 0xa1, 0x8f, 0x1b, - 0xcd, 0x2b, 0x34, 0xaf, 0xd0, 0xbc, 0x42, 0xf3, 0x6a, 0xd9, 0xcc, 0x2b, 0xf4, 0x71, 0x97, 0xe5, - 0xe3, 0x46, 0xf2, 0xdb, 0x5a, 0x27, 0xd7, 0xec, 0xc8, 0x63, 0x88, 0x05, 0x49, 0x96, 0x7f, 0xcb, - 0x2c, 0x7a, 0xab, 0x54, 0x8c, 0xb8, 0xc5, 0x45, 0x64, 0x2b, 0x3e, 0x16, 0xf2, 0xc7, 0x93, 0x7b, - 0x7e, 0x3b, 0x4f, 0x1e, 0xf8, 0x8b, 0x47, 0xf8, 0xb7, 0xe3, 0xf0, 0xa6, 0xf5, 0x6d, 0x6f, 0xf4, - 0x94, 0xdf, 0xbe, 0x08, 0x11, 0x7e, 0x8a, 0x9f, 0xef, 0x5b, 0xfa, 0xdd, 0xcb, 0xc9, 0xe3, 0xad, - 0x41, 0xed, 0x14, 0x33, 0x51, 0x04, 0x46, 0xa3, 0x07, 0x8c, 0x57, 0x48, 0x69, 0x60, 0x85, 0x94, - 0xd2, 0x6c, 0x05, 0xac, 0x90, 0xb2, 0x7a, 0x5a, 0xcb, 0x58, 0x85, 0x14, 0x62, 0xdb, 0x34, 0x54, - 0x55, 0x3f, 0x70, 0x4a, 0x08, 0x7c, 0x9a, 0xbe, 0x19, 0xe4, 0x5e, 0xd3, 0x09, 0x97, 0x89, 0xdd, - 0xa6, 0x4b, 0x24, 0x91, 0x30, 0x2c, 0x0c, 0x02, 0x49, 0x84, 0x61, 0x61, 0x4b, 0x63, 0x19, 0x97, - 0x57, 0x91, 0xba, 0x1f, 0x04, 0x1e, 0x25, 0xbc, 0x8c, 0x96, 0x66, 0xf5, 0x35, 0x8e, 0x4d, 0x26, - 0xce, 0x0d, 0x15, 0x8a, 0xc9, 0x24, 0x0a, 0x6e, 0x64, 0x4b, 0xde, 0x10, 0xaf, 0x04, 0x9d, 0xfd, - 0xf2, 0x7d, 0x21, 0xab, 0xef, 0x7a, 0xad, 0x86, 0xca, 0x1b, 0x95, 0x37, 0x2a, 0x6f, 0x54, 0xde, - 0xeb, 0xae, 0xbc, 0x23, 0xc6, 0x55, 0xbd, 0x53, 0x82, 0xee, 0xee, 0x60, 0x3f, 0x89, 0xb7, 0x5f, - 0x04, 0xfb, 0x49, 0x18, 0xd9, 0xeb, 0xd8, 0x4f, 0x42, 0xd3, 0x56, 0x69, 0xd5, 0x76, 0xb1, 0xa1, - 0x04, 0x0c, 0xd5, 0x64, 0x7e, 0xf4, 0xeb, 0x35, 0x36, 0xc6, 0xec, 0x48, 0x88, 0xd8, 0x1c, 0x9a, - 0xe4, 0x27, 0x95, 0x50, 0x61, 0xfa, 0xf9, 0x1d, 0xd1, 0xd4, 0x40, 0x53, 0x03, 0x4d, 0x0d, 0x34, - 0x35, 0x40, 0x99, 0x1a, 0xd8, 0xb9, 0x6e, 0x9d, 0x2d, 0x8d, 0x1a, 0x62, 0x47, 0xb4, 0x34, 0xe6, - 0xdb, 0x2a, 0xd8, 0xb9, 0x0e, 0x0d, 0x0d, 0x34, 0x34, 0x12, 0x38, 0x46, 0xfd, 0x50, 0x99, 0xb7, - 0x2f, 0x26, 0x37, 0x82, 0xec, 0xd7, 0x89, 0x71, 0x24, 0x3a, 0x76, 0xd0, 0xda, 0x42, 0x6b, 0x0b, - 0xad, 0xad, 0x75, 0xb7, 0xb6, 0x30, 0x2a, 0xa3, 0x4c, 0xfd, 0x5c, 0x75, 0xa8, 0x47, 0xee, 0x4b, - 0xd3, 0xd2, 0xe3, 0xdb, 0x41, 0xd6, 0xd5, 0x18, 0x81, 0x81, 0x8a, 0x1a, 0x15, 0x35, 0x2a, 0xea, - 0xb5, 0x57, 0xd4, 0x18, 0x81, 0x31, 0xf7, 0x1f, 0xe4, 0x45, 0x8b, 0xdd, 0x0f, 0x79, 0x51, 0xad, - 0x5b, 0x65, 0x11, 0xbc, 0x68, 0xb3, 0x53, 0xc3, 0xdd, 0x02, 0x43, 0x35, 0x99, 0x1f, 0x7d, 0xbd, - 0x89, 0xd1, 0xb2, 0x22, 0x2f, 0x4c, 0x47, 0x5c, 0x60, 0xc8, 0x3b, 0x1a, 0x5c, 0x68, 0x70, 0xa1, - 0xc1, 0x85, 0x06, 0x17, 0xc6, 0xa1, 0xa0, 0xbd, 0x55, 0x06, 0x88, 0xc6, 0x88, 0x77, 0xb4, 0xb7, - 0xe6, 0xdc, 0x2a, 0xa5, 0xd5, 0x6c, 0x45, 0x73, 0x0b, 0xcd, 0xad, 0x25, 0x36, 0xb7, 0x6e, 0x98, - 0x50, 0x11, 0xf1, 0xaa, 0xe3, 0x42, 0x54, 0xe6, 0xad, 0xae, 0xe7, 0x37, 0x44, 0x33, 0x03, 0xcd, - 0x0c, 0x34, 0x33, 0xd0, 0xcc, 0x00, 0x63, 0x66, 0xb0, 0xd0, 0xb0, 0xec, 0x9a, 0x96, 0x5f, 0xf5, - 0x5d, 0x83, 0xf7, 0x18, 0xcf, 0x19, 0x78, 0x5b, 0xe3, 0x71, 0x65, 0x6e, 0x5a, 0x25, 0xac, 0xcd, - 0xcc, 0x1a, 0xed, 0x94, 0x53, 0xaa, 0x56, 0x51, 0xc1, 0x4b, 0x6b, 0x07, 0x52, 0xd9, 0xd8, 0xf8, - 0x5a, 0xab, 0xee, 0x5e, 0xff, 0xfc, 0x5a, 0xaf, 0xee, 0x5e, 0x8f, 0x3e, 0xd6, 0x93, 0x7f, 0x46, - 0x9f, 0x1b, 0x5f, 0x6b, 0xd5, 0xd6, 0xe4, 0x73, 0xfb, 0x6b, 0xad, 0xda, 0xbe, 0xde, 0xbc, 0xba, - 0xda, 0xda, 0xfc, 0xd1, 0x7c, 0xc8, 0x7e, 0xe1, 0xc6, 0xbf, 0xbe, 0x5e, 0x5d, 0x85, 0x3f, 0x3e, - 0x3f, 0xc4, 0x7f, 0x9f, 0x3c, 0x5c, 0xff, 0x67, 0xf3, 0xf7, 0x0a, 0xb6, 0xeb, 0x5f, 0x9e, 0x53, - 0xd5, 0xc1, 0x53, 0xa5, 0xed, 0x54, 0x75, 0x7f, 0xc6, 0x7b, 0x9f, 0x54, 0xdd, 0xbd, 0xea, 0xd1, - 0xf5, 0x8f, 0xda, 0xfb, 0xd6, 0xc3, 0x66, 0x77, 0x73, 0xe3, 0xf9, 0xef, 0xba, 0x9b, 0x3f, 0x6a, - 0xef, 0xdb, 0x0f, 0x1b, 0x1b, 0x2f, 0xfc, 0xcf, 0xef, 0x2f, 0x8d, 0xb1, 0xf9, 0x73, 0x63, 0x63, - 0x63, 0x7c, 0x9e, 0x9e, 0x9c, 0xb1, 0xaf, 0xb5, 0xfa, 0xf5, 0xef, 0xc9, 0xc7, 0xd1, 0xdf, 0xe9, - 0x29, 0x9d, 0xeb, 0xcb, 0x9b, 0x2f, 0x9e, 0xcd, 0xf7, 0xa5, 0x89, 0xa0, 0xff, 0xed, 0x5e, 0xff, - 0xa7, 0xbb, 0xf9, 0xa3, 0xf3, 0x30, 0xf9, 0x9c, 0xfc, 0xbd, 0xf9, 0x73, 0x63, 0xeb, 0xb7, 0xab, - 0xab, 0xad, 0xad, 0xdf, 0x36, 0x47, 0x2f, 0x3e, 0xfe, 0xde, 0x6f, 0xa3, 0xff, 0xfd, 0xbd, 0xdb, - 0x9d, 0xf9, 0xd5, 0xe6, 0xc6, 0xbf, 0xb6, 0x56, 0x41, 0xac, 0x40, 0x33, 0x82, 0x0d, 0xc1, 0xbd, - 0x13, 0x26, 0xd5, 0x9e, 0x52, 0x86, 0x3b, 0x64, 0x9e, 0x32, 0x7e, 0xe8, 0x25, 0xf5, 0xb1, 0x0c, - 0xf3, 0x36, 0x95, 0x53, 0x72, 0x37, 0x75, 0xa7, 0xfa, 0x4e, 0xab, 0xd5, 0xd9, 0x6e, 0xb5, 0x6a, - 0xdb, 0xcd, 0xed, 0xda, 0x6e, 0xbb, 0x5d, 0xef, 0xd4, 0x4d, 0x92, 0xce, 0x67, 0xc2, 0xa1, 0x82, - 0x3a, 0x1f, 0xef, 0x2b, 0x5d, 0x8b, 0x47, 0x9e, 0x87, 0x74, 0x48, 0x35, 0x29, 0xd9, 0x2d, 0xaa, - 0xcc, 0x29, 0x8f, 0x10, 0x79, 0xbc, 0x25, 0x52, 0x22, 0x48, 0x89, 0x20, 0x25, 0x82, 0x94, 0x08, - 0x18, 0x4a, 0x04, 0x3d, 0xaf, 0x4b, 0x64, 0xb7, 0xa1, 0xe7, 0xd5, 0xc8, 0x56, 0x47, 0xcf, 0xab, - 0xa6, 0xad, 0x82, 0x15, 0x00, 0x20, 0x99, 0x85, 0x16, 0x7a, 0x5e, 0xb1, 0xf3, 0x51, 0x99, 0x9d, - 0x8f, 0x0c, 0x74, 0xc4, 0x5a, 0xce, 0x6e, 0x42, 0xe6, 0x4d, 0xcd, 0xd2, 0x4c, 0x4c, 0x43, 0xa6, - 0xa5, 0x31, 0x93, 0x12, 0xbb, 0x0c, 0x2d, 0x83, 0xc9, 0x88, 0x5d, 0x86, 0x4a, 0xd3, 0x10, 0xc6, - 0x4c, 0xc1, 0x12, 0x3a, 0x84, 0x9a, 0xec, 0x08, 0x9a, 0x76, 0x00, 0xdd, 0xda, 0xfa, 0x30, 0x52, - 0x69, 0x1f, 0x66, 0x65, 0xe5, 0xb2, 0xea, 0xa2, 0x77, 0x4b, 0xb4, 0xd3, 0x62, 0xa1, 0x61, 0x52, - 0xd3, 0x98, 0x21, 0xfc, 0xcd, 0x11, 0xfc, 0xa5, 0x12, 0xfa, 0x66, 0x08, 0x7c, 0x5d, 0x3b, 0xc3, - 0x10, 0x3a, 0x2d, 0x15, 0x95, 0x56, 0xb4, 0x76, 0x91, 0xcc, 0xd9, 0x74, 0x53, 0x8f, 0x20, 0x2a, - 0x2e, 0x36, 0x8a, 0x8d, 0x50, 0x70, 0x5b, 0x55, 0xe8, 0x9d, 0x12, 0xa4, 0x1a, 0x71, 0xa9, 0x48, - 0xdf, 0xd3, 0xa3, 0xd4, 0x2a, 0x82, 0xba, 0x54, 0x50, 0x6e, 0xeb, 0xe3, 0xff, 0x34, 0xee, 0xf3, - 0x89, 0x86, 0x3d, 0x3f, 0xda, 0xb7, 0xda, 0xdb, 0xbb, 0x3b, 0x56, 0xd5, 0xfa, 0x32, 0x92, 0xb2, - 0x56, 0xb2, 0x65, 0x84, 0x75, 0x4e, 0x9d, 0x88, 0x3b, 0x84, 0xdb, 0xf7, 0x56, 0x4f, 0x04, 0x2a, - 0xb0, 0x03, 0xef, 0x8a, 0x6f, 0x7c, 0x39, 0x3f, 0xef, 0x6d, 0x5a, 0x5f, 0xa8, 0x90, 0x2c, 0xe0, - 0x56, 0xd3, 0x72, 0x03, 0x61, 0x1d, 0xf7, 0x6e, 0x5a, 0x16, 0xe1, 0x4e, 0xfc, 0x41, 0x67, 0x69, - 0x02, 0x53, 0x98, 0x74, 0x1a, 0x8b, 0x3e, 0x2e, 0x92, 0x66, 0x70, 0x64, 0x1a, 0x86, 0x3e, 0x81, - 0x9f, 0xfa, 0x57, 0x71, 0xd9, 0x00, 0xc5, 0xbb, 0xc5, 0x92, 0x42, 0x45, 0xe5, 0x8b, 0x66, 0x75, - 0x65, 0x5e, 0x4d, 0x15, 0xdb, 0x00, 0xf9, 0x97, 0x2b, 0xdf, 0x95, 0x39, 0x97, 0x67, 0x82, 0x2f, - 0x73, 0x5b, 0xd4, 0x7a, 0x00, 0xa4, 0x3e, 0xc0, 0x68, 0x14, 0x20, 0xea, 0x01, 0x84, 0x79, 0x97, - 0x6a, 0x2f, 0x1a, 0xc4, 0xaf, 0x45, 0x9d, 0x42, 0xda, 0xb4, 0xd8, 0xd1, 0x4b, 0xb5, 0xe6, 0x87, - 0xd8, 0xde, 0x77, 0xbb, 0x53, 0x07, 0xec, 0xd9, 0x2f, 0xe2, 0x9f, 0xe3, 0x23, 0xd6, 0x9d, 0x3e, - 0x6e, 0x09, 0x49, 0xd0, 0x4d, 0x0e, 0xdd, 0xe8, 0xe3, 0xe3, 0xd1, 0x7b, 0xf2, 0x73, 0x41, 0x55, - 0x54, 0x39, 0xa0, 0xd2, 0x16, 0x2c, 0x1c, 0x4b, 0x9b, 0xca, 0x9e, 0xe3, 0xb0, 0xf8, 0x33, 0xf1, - 0xac, 0xe3, 0x9e, 0x15, 0xdf, 0xc3, 0x72, 0x89, 0xcf, 0xbc, 0x7b, 0x6b, 0x24, 0x32, 0x22, 0x91, - 0x08, 0xa6, 0x58, 0x09, 0x5c, 0xf1, 0xc7, 0x57, 0x2a, 0xfa, 0x14, 0x7a, 0x7a, 0x84, 0x6b, 0x63, - 0xeb, 0x74, 0xb2, 0x73, 0xda, 0xd9, 0x38, 0xdd, 0x48, 0xc7, 0x18, 0xdb, 0x66, 0x0c, 0xd6, 0x98, - 0x60, 0xd3, 0x16, 0x6b, 0x52, 0xe8, 0xea, 0xc1, 0x5d, 0x49, 0xd4, 0xb1, 0xb6, 0x9d, 0x91, 0xb2, - 0xf7, 0xf1, 0xa8, 0x9a, 0xd6, 0xee, 0x99, 0xc0, 0x39, 0xe4, 0xb6, 0x17, 0x48, 0xc6, 0x07, 0xb1, - 0x80, 0x51, 0x84, 0x71, 0x2a, 0x12, 0x84, 0x19, 0xa3, 0x4e, 0x2b, 0xb1, 0x7c, 0xa5, 0x35, 0x24, - 0xdc, 0xf1, 0xa8, 0x63, 0xf5, 0xef, 0x2d, 0x35, 0x64, 0xf2, 0x8a, 0x1f, 0xf7, 0xac, 0x54, 0xf6, - 0xe8, 0x7a, 0x2e, 0x3d, 0x22, 0x48, 0xbb, 0x28, 0x32, 0x21, 0x92, 0x8c, 0x89, 0xa6, 0x32, 0x8d, - 0x31, 0x23, 0x8e, 0x81, 0x72, 0x2d, 0x31, 0xcd, 0x8e, 0x80, 0xe5, 0xa2, 0x63, 0x0d, 0xb0, 0x24, - 0x06, 0xd9, 0x12, 0xfd, 0xac, 0x09, 0x28, 0xf6, 0xc4, 0xf4, 0xc1, 0x2d, 0x93, 0x4d, 0x29, 0xed, - 0x2c, 0x43, 0x63, 0x57, 0xf4, 0xca, 0x09, 0xfd, 0xa3, 0x5d, 0xaf, 0x06, 0xbb, 0x5c, 0x32, 0x9d, - 0x71, 0x9d, 0xd7, 0x46, 0xd6, 0xc3, 0x32, 0x19, 0x65, 0x97, 0x0a, 0x48, 0x86, 0xac, 0x4e, 0x8e, - 0x7c, 0xc7, 0x2c, 0xfb, 0x92, 0x65, 0xbb, 0x22, 0xa3, 0x32, 0x2e, 0xba, 0xa8, 0x46, 0x16, 0x33, - 0xdb, 0xcc, 0xce, 0x3f, 0x3f, 0x19, 0xe6, 0xa6, 0x62, 0x4f, 0xd0, 0x78, 0xb6, 0x39, 0x79, 0x6c, - 0x91, 0x39, 0xba, 0x3e, 0xe3, 0x6a, 0xe4, 0x33, 0x29, 0x72, 0x9b, 0x0e, 0x45, 0x4c, 0x84, 0xc2, - 0xa6, 0x40, 0x51, 0xe4, 0xa0, 0x0d, 0xda, 0x6b, 0x53, 0xfb, 0x3a, 0xa0, 0xba, 0xd9, 0xd3, 0x9e, - 0x97, 0x35, 0xa8, 0x50, 0x1e, 0x63, 0xf2, 0xfc, 0xe1, 0x7e, 0xe9, 0x6e, 0x99, 0x0c, 0x94, 0x73, - 0x86, 0x75, 0xd4, 0x27, 0x2d, 0xd0, 0x9a, 0x29, 0xaf, 0xea, 0x2c, 0x16, 0x6b, 0x58, 0x98, 0x1a, - 0xd0, 0x41, 0x05, 0x68, 0x33, 0xfd, 0x75, 0x59, 0x0c, 0xda, 0x4d, 0x7b, 0xed, 0xf0, 0x5f, 0xa7, - 0xe9, 0x5e, 0xae, 0xe7, 0xaa, 0x70, 0xec, 0x9d, 0xc6, 0xd6, 0x3f, 0x05, 0x5b, 0xfb, 0x3c, 0x2c, - 0x18, 0xed, 0xde, 0x0f, 0x02, 0x55, 0x0d, 0xec, 0xaa, 0x1d, 0xf8, 0x61, 0x02, 0x6f, 0x9c, 0xaa, - 0x47, 0x89, 0x1b, 0x0f, 0xfa, 0x50, 0x16, 0x82, 0xcc, 0xa1, 0x9c, 0x7d, 0x15, 0x15, 0x17, 0xf6, - 0xf1, 0x20, 0x28, 0x31, 0x51, 0x62, 0xa2, 0xc4, 0xcc, 0xb0, 0x5b, 0x0a, 0xf7, 0x60, 0xd1, 0xd0, - 0x63, 0x45, 0x53, 0x66, 0xa9, 0x06, 0xf7, 0x94, 0xce, 0xcc, 0xd0, 0x34, 0x9d, 0xaf, 0xa3, 0xa9, - 0x4e, 0x8f, 0xb1, 0x6c, 0x3d, 0xfd, 0xd9, 0x78, 0x1a, 0x48, 0x7a, 0xad, 0xa9, 0x97, 0x8f, 0x6b, - 0xd1, 0x6e, 0x37, 0xdb, 0xeb, 0xb7, 0x1c, 0x0b, 0x62, 0x0c, 0xaf, 0x4b, 0x15, 0x8a, 0x1a, 0x3d, - 0x3a, 0x1a, 0x3d, 0x38, 0x1a, 0x23, 0x34, 0xce, 0x8f, 0xf6, 0xad, 0xed, 0xdd, 0x7a, 0xd7, 0x4a, - 0xd8, 0x42, 0x4e, 0x55, 0x4a, 0xd4, 0x2f, 0x79, 0xd8, 0x86, 0x6e, 0x57, 0x4a, 0x39, 0x91, 0x1b, - 0xbf, 0x98, 0x6e, 0x3c, 0x91, 0x6b, 0x67, 0xd5, 0xac, 0x0b, 0x2f, 0x3e, 0xa6, 0x92, 0x97, 0x80, - 0x14, 0xe7, 0x94, 0x0d, 0x86, 0xfd, 0x40, 0xc8, 0xfc, 0xbc, 0xf8, 0xe3, 0x10, 0x48, 0x8d, 0x1b, - 0x93, 0xfc, 0x48, 0x8d, 0x97, 0x48, 0x8d, 0x4f, 0x76, 0x74, 0x71, 0xba, 0x24, 0x1d, 0xa9, 0x18, - 0x67, 0x52, 0x47, 0xce, 0x04, 0x39, 0x13, 0x08, 0x9c, 0x49, 0xd1, 0x18, 0xd6, 0xbc, 0x4e, 0xda, - 0x57, 0x37, 0x5d, 0x2e, 0xa7, 0xad, 0xe6, 0x63, 0xa8, 0xed, 0x38, 0xea, 0x3c, 0x96, 0xda, 0x8f, - 0x67, 0x19, 0x36, 0x0e, 0x86, 0xa6, 0x2f, 0x84, 0x2a, 0xd2, 0x17, 0x9a, 0xce, 0x0c, 0x04, 0xa6, - 0x6b, 0x8b, 0x5a, 0xd6, 0x5c, 0x3f, 0x06, 0xc3, 0xbf, 0x31, 0xfc, 0xbb, 0x2c, 0xf1, 0xa0, 0x47, - 0x4c, 0x68, 0x12, 0x17, 0xe9, 0x8b, 0x6a, 0xaf, 0xf7, 0xf2, 0x62, 0x8f, 0x8d, 0x2a, 0x0f, 0xaa, - 0xff, 0x17, 0x70, 0x9d, 0x21, 0xc4, 0x26, 0xaa, 0xff, 0x1b, 0xab, 0xf2, 0xbf, 0xf0, 0x1e, 0x19, - 0x9a, 0x8f, 0x47, 0x7c, 0xc3, 0xab, 0xab, 0xad, 0xeb, 0xdf, 0x2a, 0xcb, 0x16, 0x55, 0xbc, 0xe4, - 0xa5, 0x48, 0xb4, 0x33, 0x78, 0xfa, 0xa5, 0x8b, 0x0e, 0x9f, 0x95, 0xc7, 0xf8, 0xf7, 0xaa, 0x47, - 0xee, 0xa9, 0xd0, 0xde, 0x2e, 0xee, 0xb1, 0x8e, 0xd4, 0xec, 0x3d, 0x10, 0x63, 0x20, 0xc6, 0x40, - 0x8c, 0xb1, 0x74, 0x18, 0xe3, 0x94, 0x70, 0x87, 0xa8, 0x40, 0xdc, 0x6b, 0xcc, 0xdb, 0x34, 0x87, - 0x5b, 0xc2, 0xe1, 0xbd, 0x34, 0xd0, 0xc5, 0x08, 0x18, 0x5e, 0x99, 0x6e, 0x1b, 0xd4, 0x78, 0xd8, - 0xe8, 0x3e, 0xfd, 0x79, 0xf3, 0x37, 0x9d, 0x0d, 0x72, 0x50, 0xf5, 0x63, 0xbd, 0xae, 0xe5, 0xae, - 0xa7, 0x93, 0xfa, 0xcf, 0xd2, 0x4f, 0xb9, 0xfc, 0x83, 0xfa, 0xe6, 0xbb, 0xc0, 0x5c, 0xeb, 0x20, - 0x78, 0xf4, 0x11, 0x3b, 0x9a, 0xc0, 0x16, 0xf2, 0xb6, 0x4b, 0x05, 0xa2, 0x90, 0xb7, 0x2d, 0x1f, - 0xc8, 0x18, 0x28, 0xb0, 0xab, 0xb3, 0xa0, 0xee, 0x74, 0x01, 0xdd, 0x51, 0x65, 0xa4, 0x71, 0x19, - 0xdd, 0x49, 0x05, 0x25, 0x88, 0xa2, 0x74, 0x54, 0x82, 0x5e, 0x9b, 0x34, 0x1d, 0x0d, 0xb7, 0x64, - 0x8e, 0xb0, 0x06, 0x0a, 0x54, 0x14, 0xa8, 0x80, 0x04, 0x2a, 0x3a, 0xc2, 0x90, 0xa4, 0x42, 0x92, - 0x0a, 0x49, 0xaa, 0xa5, 0x21, 0x94, 0xd0, 0x11, 0x36, 0x4d, 0x2c, 0xa1, 0x23, 0xac, 0x1c, 0x36, - 0x0c, 0xfd, 0x40, 0xa8, 0x62, 0x51, 0xc5, 0xa2, 0x8a, 0x5d, 0x22, 0x15, 0x8b, 0x7e, 0x20, 0xf4, - 0x03, 0xad, 0x8b, 0xe6, 0x0b, 0x04, 0x1b, 0xe8, 0x4c, 0xa2, 0x4e, 0xe5, 0xf2, 0x68, 0x5c, 0xd4, - 0x70, 0xa8, 0xe1, 0x50, 0xc3, 0xad, 0x91, 0x11, 0x39, 0xf1, 0x3b, 0x56, 0xb5, 0x0a, 0x80, 0x27, - 0x0a, 0xa9, 0xa5, 0x71, 0xcc, 0x43, 0x1e, 0xf9, 0xe8, 0xd9, 0x4e, 0xf7, 0x3f, 0x28, 0xcf, 0xb6, - 0x86, 0xbe, 0xba, 0xd8, 0x2b, 0x26, 0x1b, 0x30, 0xc6, 0x5e, 0x31, 0x6f, 0xde, 0x7c, 0x2d, 0xaa, - 0x5a, 0xec, 0x34, 0x3a, 0x5d, 0x6b, 0x8f, 0x5b, 0x87, 0x6a, 0x38, 0xaa, 0xb4, 0x30, 0xae, 0x7a, - 0x6b, 0x9d, 0x53, 0x19, 0x78, 0x51, 0xd2, 0xd2, 0x05, 0x6b, 0x5d, 0x18, 0xae, 0x75, 0x91, 0x69, - 0x11, 0xb0, 0x02, 0x46, 0x99, 0x1a, 0xd0, 0xac, 0xe6, 0x2b, 0xa3, 0x8c, 0xf5, 0xe7, 0xc9, 0xbd, - 0xb0, 0x5e, 0x87, 0xa1, 0xe5, 0x5c, 0x86, 0x92, 0x1d, 0xf9, 0xe2, 0x42, 0x0a, 0xc5, 0x81, 0x14, - 0x2e, 0xd5, 0xd1, 0xc0, 0x52, 0x1d, 0x0b, 0xd4, 0x4a, 0x58, 0xc5, 0xfa, 0xed, 0xdd, 0x82, 0x55, - 0xac, 0x17, 0xc0, 0xc9, 0x61, 0x7d, 0x91, 0x85, 0xa0, 0x53, 0xac, 0xc9, 0xba, 0x0c, 0x55, 0xac, - 0xb1, 0xe8, 0x33, 0x0a, 0x18, 0x14, 0x30, 0x2b, 0x2b, 0x60, 0xb0, 0xe8, 0xf3, 0x33, 0x16, 0x12, - 0x8b, 0x3e, 0x63, 0xd1, 0xe7, 0x95, 0x5b, 0x0e, 0x2c, 0xfa, 0x9c, 0x71, 0x2c, 0x2c, 0xfa, 0x5c, - 0x78, 0x3c, 0x2c, 0xfa, 0xbc, 0x3a, 0x27, 0x12, 0x39, 0xd7, 0xd7, 0x38, 0xd7, 0x1c, 0x9e, 0x62, - 0x33, 0x7c, 0x6b, 0xc4, 0x79, 0xe4, 0xf7, 0xa9, 0xc8, 0xc1, 0x32, 0x3d, 0x82, 0xc1, 0xc7, 0x31, - 0xd6, 0xa4, 0x48, 0xb2, 0x8b, 0xcc, 0xeb, 0x4b, 0x86, 0x90, 0xbb, 0x32, 0xcc, 0x6b, 0xc1, 0x4a, - 0xad, 0x7a, 0x2a, 0xb4, 0xae, 0x5c, 0x81, 0x64, 0x17, 0xf9, 0x85, 0x92, 0x8e, 0xd5, 0x62, 0xf8, - 0x85, 0xc2, 0x05, 0x92, 0x8b, 0x3a, 0x3c, 0x66, 0x76, 0x5d, 0x31, 0xc7, 0xc7, 0xe3, 0x8b, 0x69, - 0x70, 0x80, 0xa4, 0x83, 0x25, 0xc6, 0x59, 0x31, 0x2c, 0x78, 0x8d, 0xa5, 0x43, 0x8c, 0x0b, 0x9c, - 0x32, 0x2c, 0x1c, 0xa0, 0x99, 0xee, 0x2e, 0x96, 0x0e, 0x79, 0xbe, 0xdb, 0x8a, 0x7b, 0x5c, 0x66, - 0xb4, 0x7e, 0x7d, 0xa5, 0x22, 0x6f, 0x8d, 0x15, 0xf1, 0x82, 0x12, 0x31, 0xbb, 0x84, 0x81, 0x5c, - 0x8f, 0x86, 0x5b, 0xa1, 0xa2, 0x5c, 0xe5, 0x38, 0xfb, 0xd2, 0xf7, 0xa8, 0x0a, 0xea, 0x16, 0x47, - 0xe6, 0x4f, 0x87, 0x43, 0x80, 0x8e, 0x00, 0x1d, 0x01, 0xba, 0x71, 0xbb, 0x58, 0xaf, 0x7d, 0xac, - 0xe9, 0x18, 0x22, 0x9c, 0x45, 0x38, 0x0b, 0x1b, 0xce, 0xea, 0x2b, 0xdc, 0x34, 0x51, 0x8a, 0x06, - 0xea, 0x37, 0xa5, 0x43, 0x63, 0x06, 0xee, 0xd2, 0x08, 0x03, 0x53, 0x42, 0xc1, 0xb8, 0x70, 0x30, - 0x2e, 0x24, 0x4c, 0x0a, 0x0b, 0x3d, 0x42, 0x43, 0x93, 0xf0, 0xd0, 0x6f, 0x13, 0xcf, 0xec, 0x56, - 0x7d, 0x65, 0x35, 0x67, 0x34, 0xfe, 0xb6, 0xde, 0x52, 0x10, 0x63, 0x93, 0x2a, 0x5e, 0xe6, 0xee, - 0x94, 0x09, 0xf5, 0xec, 0x17, 0xe3, 0x9f, 0x93, 0x94, 0x15, 0x2c, 0xc0, 0xbd, 0x1c, 0x27, 0x41, - 0x47, 0xe8, 0x90, 0x8c, 0xfa, 0x06, 0x15, 0xe0, 0x93, 0xd1, 0x51, 0x07, 0xa2, 0x0e, 0x44, 0x1d, - 0x88, 0x3a, 0x10, 0xac, 0x0e, 0xfc, 0xfa, 0xa8, 0x03, 0xff, 0xc7, 0x8e, 0x84, 0xa0, 0x5c, 0x6d, - 0x6c, 0x7e, 0xd8, 0xda, 0x7a, 0xa4, 0x1b, 0xaf, 0xc7, 0x97, 0x4c, 0xcb, 0x3d, 0xf9, 0xc2, 0xef, - 0xd2, 0x91, 0x1d, 0x7a, 0x87, 0xea, 0x14, 0xab, 0x7e, 0x2c, 0x77, 0xd5, 0x8f, 0x29, 0xca, 0xfc, - 0x09, 0x83, 0x0c, 0xb8, 0xab, 0x05, 0x96, 0x62, 0x47, 0x46, 0x0f, 0x19, 0x3d, 0x64, 0xf4, 0x90, - 0xd1, 0x43, 0x6b, 0x06, 0xad, 0x19, 0xb4, 0x66, 0x90, 0xd1, 0x43, 0x42, 0x0b, 0x09, 0x2d, 0x54, - 0x01, 0xa8, 0x02, 0x50, 0x05, 0x20, 0xa1, 0xb5, 0x14, 0x84, 0x16, 0xf2, 0x39, 0xa5, 0xf3, 0x39, - 0x6b, 0x54, 0xcb, 0x75, 0xb9, 0x23, 0x53, 0x75, 0x04, 0x6a, 0x5a, 0x59, 0x0a, 0x0d, 0xfe, 0x99, - 0xde, 0xfb, 0x5b, 0xfa, 0xa5, 0x73, 0xea, 0x2e, 0x73, 0x6c, 0x6c, 0x31, 0x0a, 0x4f, 0x0b, 0x75, - 0xa7, 0x2d, 0x16, 0xb6, 0x81, 0xb1, 0xb0, 0xe6, 0xa0, 0x16, 0xc6, 0xc2, 0x6a, 0xa3, 0xd8, 0x30, - 0x59, 0x6d, 0xce, 0x3f, 0x98, 0xac, 0x56, 0x9e, 0xed, 0x87, 0xbe, 0x00, 0x4c, 0x56, 0x7b, 0x7b, - 0xb7, 0x2d, 0x5f, 0xb2, 0x1a, 0x22, 0x65, 0x0d, 0x48, 0xb9, 0x80, 0xc9, 0x82, 0xa5, 0x5a, 0xe6, - 0x98, 0xe0, 0x4a, 0x2e, 0x64, 0x9e, 0xd5, 0xe8, 0x30, 0x56, 0x15, 0xe6, 0x9d, 0xc6, 0x85, 0xca, - 0xbb, 0x40, 0x1a, 0x17, 0xa6, 0x92, 0xa9, 0xaa, 0xf8, 0x5c, 0xab, 0x30, 0xdf, 0xd4, 0xbf, 0x3d, - 0x91, 0x73, 0x4c, 0x62, 0x85, 0x85, 0x37, 0x9d, 0xb9, 0xa7, 0x6e, 0xba, 0x23, 0xee, 0xbc, 0x55, - 0x17, 0x33, 0x1a, 0x64, 0x99, 0xf1, 0x51, 0x1e, 0x1c, 0x94, 0xbb, 0xda, 0x68, 0x5e, 0x5c, 0x53, - 0x18, 0xbf, 0x14, 0xc6, 0x29, 0x45, 0xaa, 0x85, 0xea, 0x3d, 0xb2, 0x59, 0x0d, 0x9e, 0xca, 0xb8, - 0x85, 0x23, 0x95, 0xf9, 0x4b, 0x43, 0x3d, 0x0e, 0xb1, 0x26, 0x95, 0xa1, 0xb0, 0x26, 0xbf, 0xb5, - 0xda, 0x35, 0xf9, 0x8b, 0x76, 0x63, 0x7e, 0x7e, 0x34, 0x30, 0xf5, 0x1c, 0x6b, 0x4f, 0x97, 0x7b, - 0xb0, 0x80, 0xd2, 0x6d, 0x98, 0x7a, 0xbe, 0x48, 0x72, 0x2a, 0x44, 0x72, 0xca, 0x04, 0x39, 0x15, - 0x62, 0xa0, 0x6a, 0x6a, 0x0f, 0x19, 0x88, 0x50, 0x0d, 0x31, 0x2e, 0x69, 0x79, 0x8e, 0xbf, 0x29, - 0x31, 0x60, 0x5c, 0x1c, 0x18, 0x17, 0x0b, 0x26, 0xc5, 0x83, 0x1e, 0x31, 0xa1, 0x49, 0x5c, 0xa4, - 0x2f, 0x6a, 0x2e, 0x2e, 0x89, 0x85, 0x37, 0x9d, 0xea, 0x18, 0x5b, 0x57, 0x79, 0x50, 0xfd, 0xbf, - 0x80, 0x53, 0x13, 0x41, 0x4a, 0x3b, 0x7a, 0x83, 0x94, 0x14, 0x15, 0x5c, 0x8b, 0xc7, 0xee, 0xc9, - 0xc0, 0x1b, 0x1b, 0xdd, 0x9f, 0x5f, 0x6b, 0xd5, 0x5d, 0x52, 0x75, 0xf7, 0xaa, 0x47, 0xd7, 0x3f, - 0x6a, 0xef, 0x5b, 0x0f, 0x9b, 0xdd, 0xcd, 0x8d, 0xe7, 0xbf, 0xeb, 0x6e, 0xfe, 0xa8, 0xbd, 0x6f, - 0x3f, 0x6c, 0x6c, 0xbc, 0xf0, 0x3f, 0xbf, 0xbf, 0x34, 0xc6, 0xe6, 0xcf, 0x8d, 0x8d, 0x8d, 0x46, - 0xfb, 0x6b, 0xad, 0xda, 0xbe, 0xfe, 0xd9, 0xf8, 0x5a, 0xab, 0xb6, 0xae, 0xe3, 0xef, 0x5c, 0xff, - 0xfc, 0x5a, 0xab, 0x5f, 0xff, 0x9e, 0x7c, 0x1c, 0xfd, 0xbd, 0x79, 0x75, 0xb5, 0xb5, 0xf9, 0xa3, - 0xf9, 0x30, 0xdf, 0x97, 0x37, 0x37, 0x37, 0xfe, 0xf5, 0xf5, 0xea, 0x2a, 0xfc, 0xf1, 0xf9, 0x21, - 0xfe, 0xfb, 0xe4, 0xe1, 0xfa, 0x3f, 0x9b, 0xbf, 0xeb, 0x3e, 0xc5, 0x1b, 0x1b, 0x5f, 0xff, 0xb7, - 0x7b, 0xfd, 0x9f, 0xee, 0xe6, 0x8f, 0xce, 0xc3, 0xe4, 0x73, 0xf2, 0xf7, 0xe6, 0xcf, 0x8d, 0xad, - 0xdf, 0xae, 0xae, 0xb6, 0xb6, 0x7e, 0xdb, 0x1c, 0xbd, 0xe0, 0xf8, 0x7b, 0xbf, 0x8d, 0xfe, 0xf7, - 0xf7, 0x6e, 0x77, 0xe6, 0x57, 0x9b, 0x1b, 0xff, 0xda, 0x32, 0xf0, 0x88, 0x8f, 0xf3, 0xdd, 0xbd, - 0xba, 0xda, 0xba, 0xfe, 0x4d, 0x9f, 0x18, 0xb8, 0xc6, 0x0c, 0xcb, 0xe5, 0x90, 0xa6, 0x3a, 0xe2, - 0xbb, 0x47, 0x5a, 0xae, 0xea, 0x51, 0x3e, 0x48, 0xf8, 0x74, 0xcd, 0xf0, 0xe9, 0xe9, 0xf0, 0x88, - 0xa4, 0x10, 0x49, 0x21, 0x92, 0x5a, 0x3a, 0x24, 0x75, 0x4a, 0xb8, 0x43, 0x54, 0x20, 0xee, 0x8b, - 0xb3, 0x10, 0x25, 0xa0, 0xb3, 0x88, 0x71, 0xb5, 0x63, 0x00, 0x8e, 0xb5, 0x35, 0x0e, 0xa9, 0xa7, - 0xad, 0xd8, 0xf3, 0x3f, 0x7a, 0x4f, 0xa8, 0xa5, 0xbb, 0xed, 0xd8, 0xcc, 0xe0, 0x93, 0xd6, 0x57, - 0xb5, 0xf7, 0x66, 0xc6, 0x37, 0xd5, 0x06, 0x6b, 0x76, 0xeb, 0xe9, 0x6e, 0x8b, 0x65, 0xe8, 0x24, - 0x3f, 0x3b, 0xd5, 0x77, 0xe6, 0x97, 0xb6, 0xde, 0xd8, 0xc1, 0xc5, 0x2d, 0x45, 0xd8, 0xeb, 0x1f, - 0x0d, 0x71, 0x3c, 0x66, 0xd6, 0x2c, 0x73, 0x66, 0x4d, 0xe7, 0x43, 0xea, 0xfa, 0x9f, 0x7c, 0x02, - 0x5c, 0x22, 0x45, 0x03, 0x39, 0xad, 0x8f, 0x94, 0x5e, 0x9b, 0x80, 0x68, 0xf4, 0x39, 0x2d, 0xab, - 0x29, 0xb4, 0x6a, 0x01, 0xd1, 0xfa, 0x92, 0x59, 0x75, 0x26, 0xb1, 0xa6, 0xc9, 0xab, 0x5b, 0x5b, - 0x49, 0x4e, 0x69, 0xd8, 0x1d, 0x49, 0xd0, 0xf1, 0x0f, 0x45, 0x17, 0x12, 0xab, 0x4d, 0x3d, 0x5f, - 0xb3, 0x55, 0xaf, 0x36, 0x85, 0x02, 0x15, 0x05, 0xea, 0x4b, 0x2f, 0x84, 0x4e, 0xfc, 0x45, 0xe2, - 0x27, 0x13, 0xc7, 0xde, 0xd8, 0xf1, 0x37, 0x25, 0x06, 0x8c, 0x8b, 0x03, 0xe3, 0x62, 0xc1, 0xa4, - 0x78, 0xd0, 0xcb, 0x1f, 0xa0, 0x13, 0x1f, 0x9d, 0xf8, 0xe8, 0xc4, 0x47, 0x27, 0xfe, 0x52, 0xf8, - 0xb0, 0x03, 0xc1, 0x06, 0x1a, 0xfd, 0x18, 0x8f, 0x0a, 0x6f, 0x34, 0x2e, 0x42, 0x07, 0x84, 0x0e, - 0x08, 0x1d, 0xd6, 0x0a, 0x3a, 0xa4, 0xc0, 0x41, 0xab, 0x08, 0x78, 0x82, 0x1b, 0x5a, 0x1a, 0xc7, - 0x3c, 0xe4, 0x91, 0x8f, 0x81, 0x49, 0x99, 0xd6, 0x18, 0x03, 0x93, 0x50, 0xc4, 0xa3, 0x88, 0x5f, - 0x72, 0x11, 0x8f, 0x81, 0x49, 0x18, 0x98, 0x64, 0xe0, 0x0f, 0x06, 0x26, 0x95, 0x7d, 0x92, 0x9f, - 0x9d, 0x6a, 0x0c, 0x4c, 0x5a, 0x8e, 0xc5, 0x5d, 0xed, 0xc0, 0xa4, 0xe5, 0xa8, 0x9f, 0xae, 0x88, - 0x8a, 0xa4, 0x81, 0xca, 0xe9, 0xa3, 0x71, 0x11, 0xb8, 0x22, 0x70, 0x45, 0xe0, 0xba, 0x46, 0xdc, - 0x04, 0xe5, 0x91, 0x4f, 0xc5, 0x28, 0x5c, 0x6f, 0xbd, 0x58, 0x09, 0x4d, 0x4b, 0x43, 0xef, 0x94, - 0x20, 0xd5, 0x88, 0x4b, 0x45, 0xfa, 0x9e, 0xe6, 0x45, 0x12, 0xd4, 0xa5, 0x82, 0x72, 0x1b, 0x04, - 0xc2, 0x9e, 0xec, 0xa8, 0xf3, 0xa3, 0x7d, 0xab, 0xd5, 0xd8, 0x6d, 0x76, 0xad, 0x53, 0xc2, 0xc9, - 0x80, 0xc6, 0x07, 0xd4, 0x3a, 0xe6, 0x6e, 0x20, 0xfc, 0x64, 0x9b, 0x59, 0x1f, 0x89, 0xa4, 0x96, - 0x1b, 0x08, 0x4b, 0x0d, 0xe9, 0x15, 0x9f, 0x1a, 0x22, 0x29, 0x82, 0xc6, 0xa9, 0xb2, 0x7a, 0x22, - 0x50, 0x81, 0x1d, 0x78, 0xd6, 0xc6, 0x71, 0x6f, 0xf3, 0xc9, 0x57, 0xaa, 0xd6, 0x71, 0xb8, 0x37, - 0xe2, 0xd2, 0x2e, 0x12, 0x8d, 0x75, 0xb9, 0x7f, 0xc5, 0xad, 0xe4, 0x96, 0x3b, 0x9d, 0x46, 0xd7, - 0x3a, 0xee, 0xdd, 0x74, 0xac, 0xf8, 0x7f, 0xa8, 0x47, 0xa5, 0xb4, 0xc6, 0x5f, 0xb5, 0xf6, 0xa2, - 0x78, 0xbc, 0x58, 0x89, 0x44, 0xda, 0xf7, 0xba, 0x69, 0x39, 0xfd, 0x92, 0xbc, 0x7e, 0xdc, 0x18, - 0x86, 0xb0, 0xa2, 0x69, 0xd1, 0xfd, 0xa2, 0x08, 0x87, 0xb1, 0x73, 0x10, 0x36, 0x97, 0x0d, 0x9b, - 0x31, 0x9c, 0x7d, 0xde, 0x70, 0xf6, 0xc5, 0x76, 0x88, 0x28, 0x10, 0x82, 0x79, 0x23, 0x84, 0xc6, - 0x78, 0xf6, 0x64, 0x34, 0xac, 0xa2, 0x54, 0x9a, 0xa9, 0x82, 0x01, 0x98, 0x18, 0x80, 0xf9, 0xcb, - 0xa3, 0x5d, 0x1d, 0x88, 0x20, 0x32, 0x10, 0x88, 0x39, 0x35, 0xb6, 0x5e, 0xe6, 0xa2, 0x8e, 0xcc, - 0x05, 0x32, 0x17, 0xc8, 0x5c, 0x14, 0x7f, 0x51, 0x5d, 0x62, 0x24, 0x1d, 0x50, 0x53, 0xcd, 0xc5, - 0x57, 0x0f, 0x81, 0x96, 0x1a, 0x8c, 0x86, 0xc5, 0x8a, 0x31, 0xf1, 0x62, 0x52, 0xcc, 0x18, 0x17, - 0x37, 0x8b, 0x30, 0xc4, 0x8d, 0x88, 0x9f, 0xc5, 0x5a, 0xe1, 0x9a, 0xc5, 0x91, 0x21, 0x2b, 0x57, - 0xf3, 0x7e, 0xd7, 0x2d, 0xa6, 0xd2, 0x81, 0x89, 0x6d, 0xd3, 0x50, 0x55, 0xfd, 0xc0, 0x31, 0xb8, - 0x21, 0xd3, 0xfa, 0xcd, 0x53, 0x37, 0x33, 0xb4, 0x53, 0x74, 0x76, 0x72, 0x7a, 0xf5, 0x26, 0x1a, - 0x3a, 0x3c, 0xbd, 0x4a, 0x6a, 0x18, 0x9a, 0x17, 0xbd, 0x1e, 0xaf, 0xd2, 0x04, 0x7d, 0x19, 0x02, - 0xbf, 0x34, 0xc1, 0x5f, 0x96, 0x02, 0x28, 0x5d, 0x11, 0x94, 0xae, 0x10, 0xca, 0x54, 0x0c, 0x66, - 0x14, 0x84, 0x21, 0x45, 0x91, 0x4e, 0x8c, 0x76, 0x8f, 0xdc, 0xab, 0xa7, 0x45, 0x5f, 0x67, 0xac, - 0x37, 0xd1, 0x69, 0x1d, 0xd4, 0x12, 0x18, 0xaa, 0xf0, 0x32, 0x73, 0x1f, 0xe3, 0x15, 0x5f, 0xcc, - 0x9f, 0x04, 0x13, 0x61, 0x57, 0xc4, 0xb9, 0xa1, 0x42, 0x31, 0x99, 0xb8, 0x69, 0x46, 0xe4, 0xf5, - 0x0d, 0xf1, 0x4a, 0x00, 0x39, 0x2f, 0xdf, 0x17, 0x32, 0xde, 0xa9, 0xd7, 0x6a, 0x88, 0x76, 0x10, - 0xed, 0x20, 0xda, 0x41, 0xb4, 0xb3, 0xee, 0x68, 0x27, 0x62, 0x5c, 0xd5, 0x3b, 0x25, 0x80, 0x9d, - 0x8e, 0xc1, 0x5b, 0x98, 0x89, 0x8a, 0x7f, 0xfe, 0xc7, 0xec, 0x71, 0xb7, 0x4c, 0x47, 0xcd, 0xcf, - 0xdc, 0x2c, 0x0d, 0xb5, 0x7e, 0x5f, 0xce, 0xfd, 0xca, 0x0a, 0xbc, 0x9e, 0xdd, 0xeb, 0xa6, 0x03, - 0xb1, 0x4b, 0x12, 0x0b, 0x4f, 0xb7, 0x0a, 0xb9, 0x2b, 0x7f, 0xab, 0xb4, 0x6a, 0xbb, 0x6d, 0xdc, - 0x2d, 0x20, 0x54, 0x93, 0xf9, 0xd1, 0xaf, 0xd1, 0x7a, 0x45, 0xeb, 0x75, 0xde, 0x69, 0x09, 0x05, - 0xa5, 0x7e, 0xa8, 0xcc, 0x9b, 0xab, 0x93, 0x1b, 0x41, 0xb6, 0x4f, 0x63, 0xe8, 0x8d, 0x06, 0x2a, - 0x1a, 0xa8, 0x68, 0xa0, 0xa2, 0x81, 0xba, 0xee, 0x06, 0x2a, 0xd2, 0xf1, 0x08, 0x68, 0x96, 0x18, - 0xd0, 0x54, 0x1d, 0xea, 0x91, 0xfb, 0xd2, 0x60, 0xcd, 0xf8, 0x76, 0x90, 0xc1, 0x0d, 0x52, 0xef, - 0x88, 0x6c, 0x10, 0xd9, 0x20, 0xb2, 0x59, 0x7b, 0x64, 0x83, 0xd4, 0xfb, 0xdc, 0x7f, 0x56, 0x95, - 0x7a, 0xaf, 0x21, 0x99, 0x0a, 0x43, 0x2c, 0x3c, 0xdd, 0x2a, 0x8b, 0xa0, 0xde, 0x9b, 0x9d, 0x1a, - 0xee, 0x16, 0x18, 0xaa, 0xc9, 0xfc, 0xe8, 0x48, 0xbd, 0xa3, 0xa5, 0x9a, 0xc1, 0x52, 0x65, 0x81, - 0x60, 0xaa, 0x14, 0x23, 0x75, 0x7c, 0x27, 0x0c, 0x0e, 0x43, 0x0b, 0x15, 0x2d, 0x54, 0xb4, 0x50, - 0xd1, 0x42, 0x05, 0x6f, 0xa1, 0xee, 0x94, 0x60, 0xa0, 0xb6, 0xd1, 0x40, 0x5d, 0x52, 0x03, 0x15, - 0x63, 0xc3, 0xd0, 0x40, 0x9d, 0x73, 0xab, 0x34, 0xda, 0x2d, 0xdc, 0x2c, 0x68, 0x9f, 0xa2, 0x7d, - 0x8a, 0xf6, 0x69, 0xb6, 0x69, 0xb9, 0x61, 0x42, 0x45, 0xc4, 0x9b, 0xf4, 0xec, 0x30, 0x6f, 0xa6, - 0x3e, 0xbf, 0x21, 0xda, 0x65, 0x68, 0x97, 0xa1, 0x5d, 0x86, 0x76, 0x19, 0x18, 0xbb, 0xec, 0xb1, - 0xc1, 0x51, 0x19, 0x61, 0x51, 0xbb, 0x06, 0xef, 0x31, 0x9e, 0x33, 0xf0, 0xc6, 0xd9, 0x54, 0xd7, - 0xca, 0x56, 0x09, 0x6b, 0x33, 0xb3, 0x46, 0x3b, 0x25, 0xdc, 0xcb, 0x54, 0x77, 0xcb, 0x57, 0x6f, - 0x38, 0xea, 0x62, 0x79, 0xfd, 0xf3, 0x6b, 0xbd, 0xba, 0x3b, 0xee, 0x34, 0x59, 0x4f, 0xfe, 0x19, - 0x7d, 0x9e, 0xee, 0x40, 0x39, 0xee, 0x4a, 0x99, 0x76, 0xa9, 0xcc, 0x7c, 0xe1, 0x4b, 0xfd, 0x2a, - 0x8d, 0xbf, 0xe5, 0xf5, 0x3b, 0xc0, 0x96, 0x66, 0xb9, 0xa7, 0xaa, 0x83, 0xa7, 0x4a, 0xdb, 0xa9, - 0xc2, 0x5e, 0xb2, 0x59, 0x44, 0x90, 0xf6, 0x1e, 0xb3, 0xd0, 0xc5, 0x0a, 0xb2, 0x06, 0xc9, 0xd6, - 0x38, 0x61, 0x52, 0xed, 0x29, 0x25, 0xcc, 0x42, 0xbe, 0x53, 0xc6, 0x0f, 0xbd, 0xa4, 0xf4, 0x86, - 0x61, 0xa2, 0xab, 0x72, 0x4a, 0xee, 0xa6, 0xee, 0x54, 0xdf, 0x69, 0xb5, 0x3a, 0xdb, 0xad, 0x56, - 0x6d, 0xbb, 0xb9, 0x5d, 0xdb, 0x6d, 0xb7, 0xeb, 0x9d, 0xba, 0x49, 0x96, 0xfe, 0x4c, 0x38, 0x54, - 0x50, 0xe7, 0xe3, 0x7d, 0xa5, 0x6b, 0xf1, 0xc8, 0xf3, 0x90, 0x3f, 0x42, 0xfe, 0x28, 0x2b, 0x7f, - 0xe4, 0x31, 0xfe, 0xbd, 0xea, 0x05, 0x76, 0x19, 0x45, 0x71, 0x5e, 0xb8, 0x27, 0xb2, 0x48, 0xc8, - 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, 0x48, 0xc8, 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, - 0x48, 0xc8, 0x22, 0x21, 0x8b, 0x84, 0x2c, 0x12, 0xb2, 0x48, 0xc8, 0x22, 0x21, 0x77, 0xb0, 0xe4, - 0xdc, 0x41, 0xd2, 0xeb, 0x4d, 0x54, 0x99, 0x53, 0x1e, 0x75, 0xf0, 0x78, 0x4b, 0x64, 0x0e, 0x90, - 0x39, 0x40, 0xe6, 0x00, 0x99, 0x03, 0x30, 0xcc, 0x01, 0xe6, 0x05, 0x2c, 0x91, 0x79, 0x83, 0x79, - 0x01, 0x46, 0xb6, 0x3a, 0xe6, 0x05, 0x68, 0xda, 0x2a, 0x8d, 0x36, 0x96, 0x8c, 0x85, 0x63, 0x3d, - 0xa1, 0x6d, 0x86, 0xb6, 0xd9, 0xc2, 0x47, 0xd4, 0xdd, 0x6d, 0x6e, 0x2f, 0x1a, 0xc4, 0x88, 0x91, - 0x3a, 0x46, 0xf4, 0xbd, 0x61, 0x7b, 0xf1, 0x43, 0x0c, 0x72, 0xdd, 0xee, 0x54, 0x8b, 0xf2, 0x67, - 0xbf, 0x88, 0x7f, 0xbe, 0xf1, 0x08, 0xef, 0x4e, 0x37, 0x2c, 0x4f, 0x90, 0x71, 0x37, 0x69, 0x5b, - 0x3e, 0xfa, 0xf8, 0xd8, 0xbc, 0xfc, 0xc9, 0xcf, 0x1f, 0x6e, 0x84, 0x08, 0x3f, 0x3c, 0xf6, 0xf5, - 0xfd, 0x60, 0xa4, 0x1f, 0x67, 0xfa, 0x52, 0x07, 0x54, 0xda, 0x82, 0x85, 0xe3, 0x33, 0x55, 0xd9, - 0x73, 0x1c, 0x16, 0x7f, 0x26, 0x9e, 0xf5, 0xe5, 0xfc, 0xbc, 0x67, 0x39, 0x44, 0x11, 0xcb, 0x0d, - 0x84, 0x75, 0xdc, 0xbb, 0xe9, 0x58, 0x8f, 0xaf, 0x6c, 0xd8, 0x44, 0xae, 0xa3, 0x89, 0x8c, 0x26, - 0x32, 0x9a, 0xc8, 0xab, 0x6f, 0x22, 0x9b, 0x6a, 0x3b, 0x9a, 0xde, 0xa0, 0xc4, 0x58, 0xa4, 0x99, - 0x03, 0x5a, 0x5a, 0x4c, 0xd2, 0x6b, 0xd2, 0xfc, 0x28, 0x10, 0x23, 0x31, 0x1e, 0xf0, 0xe7, 0x02, - 0xfc, 0xbd, 0x25, 0xa9, 0x92, 0x96, 0x1a, 0x52, 0x6b, 0xfc, 0x98, 0x56, 0xfc, 0x98, 0x56, 0xf2, - 0x98, 0x57, 0xbc, 0x1c, 0xaf, 0x9c, 0x61, 0x46, 0xb4, 0x34, 0xb1, 0x5f, 0xa6, 0xf8, 0x2f, 0x5d, - 0x0d, 0x94, 0xad, 0x0e, 0x16, 0xa6, 0x16, 0x16, 0xa6, 0x1e, 0x16, 0xa1, 0x26, 0x4a, 0x32, 0x5c, - 0x0d, 0x9f, 0x37, 0xe3, 0x0c, 0xeb, 0xcc, 0x69, 0x2b, 0x25, 0x46, 0x6b, 0x06, 0x0e, 0xef, 0x96, - 0x70, 0xaf, 0x52, 0x62, 0xb6, 0xcc, 0x9a, 0x68, 0x6f, 0xac, 0x5c, 0xa9, 0x31, 0x5c, 0x33, 0x6b, - 0xb8, 0x53, 0xe2, 0x3d, 0xcb, 0x8e, 0x3e, 0x49, 0x6f, 0xbc, 0xf2, 0xb1, 0x5d, 0x66, 0x89, 0xb3, - 0x92, 0xe5, 0xe7, 0x62, 0x4f, 0x63, 0x07, 0x4f, 0xa3, 0xf1, 0xd3, 0x88, 0x31, 0x61, 0x79, 0x44, - 0x18, 0xbc, 0xd8, 0xb0, 0x92, 0xc5, 0x12, 0xc6, 0xba, 0x95, 0xcb, 0xbe, 0x2c, 0xb9, 0x7b, 0xe0, - 0x5a, 0xb7, 0x7b, 0xc0, 0xac, 0x9f, 0xa7, 0x22, 0xed, 0x21, 0xf5, 0x49, 0x48, 0xd4, 0x70, 0xc4, - 0xe7, 0x87, 0x94, 0x8f, 0x58, 0xf6, 0xea, 0x14, 0xa9, 0xff, 0xd2, 0xc7, 0x0f, 0xd3, 0x8c, 0x7e, - 0xc2, 0xe5, 0x3f, 0xb2, 0xf8, 0x6f, 0xf0, 0xf7, 0xef, 0x96, 0x73, 0xf9, 0x34, 0x22, 0x8c, 0x4a, - 0x3a, 0x4d, 0x55, 0x25, 0x88, 0xfd, 0x9d, 0xf1, 0x81, 0xf6, 0xe5, 0x7b, 0xc4, 0x0f, 0xb3, 0xf7, - 0xd2, 0xbc, 0x09, 0xcd, 0xb8, 0x22, 0x8c, 0x71, 0x51, 0x26, 0xb9, 0x27, 0xe3, 0x5c, 0x93, 0x69, - 0x6e, 0xa9, 0x34, 0x2e, 0xa9, 0x34, 0xee, 0xa8, 0x0c, 0xae, 0x68, 0xb9, 0x7d, 0xc8, 0xa6, 0x5c, - 0x07, 0x15, 0x7b, 0x72, 0x42, 0x0d, 0xfb, 0x91, 0xcd, 0x3a, 0x76, 0xd1, 0x93, 0xba, 0x78, 0xb1, - 0x56, 0x96, 0x78, 0x2b, 0x5d, 0xcc, 0x95, 0x2e, 0xee, 0xca, 0x14, 0x7b, 0x86, 0xb1, 0x3c, 0x54, - 0x4f, 0xea, 0xa4, 0x97, 0x44, 0xd5, 0xa1, 0xb6, 0xa0, 0xe3, 0x35, 0x28, 0xc9, 0x93, 0xfa, 0xc2, - 0xbd, 0x8d, 0x7b, 0x52, 0xcd, 0x77, 0xb6, 0x48, 0x6f, 0x56, 0x33, 0x4b, 0x10, 0x5c, 0xa3, 0x17, - 0x77, 0xd9, 0x54, 0x4f, 0xe9, 0x2a, 0xa8, 0x6c, 0x55, 0xb4, 0x30, 0x95, 0xb4, 0x30, 0xd5, 0xb4, - 0x08, 0x15, 0x65, 0x9e, 0xd0, 0xb2, 0x56, 0xd2, 0x8b, 0x6b, 0x3a, 0x5f, 0xe6, 0xb9, 0x68, 0x2c, - 0x21, 0xe0, 0xbe, 0xa4, 0xfc, 0x99, 0xc9, 0x9f, 0x12, 0x5d, 0x46, 0x65, 0xe6, 0xd3, 0xa4, 0x37, - 0x2d, 0xb9, 0x21, 0x64, 0x7a, 0xdf, 0x45, 0xa5, 0x4c, 0x3c, 0x1e, 0x91, 0xb2, 0x53, 0x27, 0x4a, - 0x92, 0x32, 0x4f, 0xb7, 0x54, 0x89, 0x79, 0x37, 0x33, 0x5b, 0xaa, 0xb4, 0xbe, 0x1c, 0xb8, 0xa9, - 0x4a, 0xf0, 0x54, 0x59, 0xab, 0xe0, 0x0f, 0x33, 0x6d, 0xb4, 0x97, 0x93, 0xb7, 0x93, 0xde, 0xaf, - 0xf4, 0xfc, 0x1d, 0xf3, 0x1b, 0xc1, 0xe0, 0x12, 0x55, 0x12, 0x0f, 0xca, 0xa3, 0xeb, 0xab, 0x3c, - 0xb3, 0xfe, 0xf9, 0x8d, 0xd1, 0x4e, 0x45, 0x3b, 0x15, 0xed, 0x54, 0xb4, 0x53, 0xd1, 0x4e, 0x1d, - 0x9f, 0xb6, 0x58, 0x6b, 0x09, 0xea, 0x96, 0x19, 0x6a, 0xbc, 0x5d, 0x4e, 0x71, 0xb4, 0xe1, 0xdc, - 0x99, 0x94, 0xcc, 0xed, 0xf2, 0x78, 0x3a, 0x10, 0x01, 0xad, 0x39, 0x02, 0xc2, 0x54, 0xf5, 0x17, - 0xee, 0x53, 0x6a, 0x28, 0xd3, 0x6c, 0xd0, 0x8d, 0x91, 0xe8, 0x26, 0x73, 0x2b, 0x6e, 0xa2, 0x62, - 0x99, 0x54, 0x44, 0x51, 0xf3, 0xd1, 0x02, 0xa3, 0xdb, 0x00, 0x0f, 0x16, 0x68, 0x60, 0xb0, 0xc0, - 0xd2, 0x20, 0x5f, 0x0c, 0x16, 0x58, 0x5f, 0xed, 0x84, 0xc1, 0x02, 0x7a, 0xa7, 0x13, 0x83, 0x05, - 0x90, 0x84, 0x41, 0x12, 0x06, 0x49, 0x18, 0x24, 0x61, 0x30, 0x58, 0xa0, 0xb0, 0x68, 0xc4, 0x60, - 0x81, 0x02, 0x2f, 0x86, 0xc1, 0x02, 0x65, 0x3e, 0x00, 0x06, 0x0b, 0x98, 0xde, 0x52, 0x18, 0x2c, - 0x80, 0xc1, 0x02, 0x99, 0x21, 0x3c, 0xfa, 0xb8, 0x67, 0x36, 0x15, 0xfa, 0xb8, 0xd1, 0xbc, 0x42, - 0xf3, 0x0a, 0xcd, 0x2b, 0x34, 0xaf, 0x96, 0xcd, 0xbc, 0x42, 0x1f, 0x77, 0x59, 0x3e, 0x6e, 0x24, - 0xbf, 0xad, 0x75, 0x72, 0xcd, 0x8e, 0x3c, 0x86, 0x58, 0xaf, 0x7c, 0xf9, 0xb7, 0xcc, 0xa2, 0xb7, - 0x4a, 0xc5, 0x88, 0x5b, 0x5c, 0x44, 0xb6, 0xe2, 0x63, 0x21, 0x7f, 0x3c, 0xb9, 0xe7, 0xb7, 0xf3, - 0xe4, 0x81, 0xbf, 0x78, 0x84, 0x7f, 0x3b, 0x0e, 0x6f, 0x3a, 0xdf, 0xf6, 0x46, 0x4f, 0xf9, 0xed, - 0x8b, 0x10, 0xe1, 0xa7, 0xf8, 0xf9, 0xbe, 0xa5, 0xdf, 0xbd, 0x9c, 0x3c, 0xde, 0x1a, 0xd4, 0x4e, - 0x31, 0x13, 0x45, 0x60, 0x34, 0x7a, 0xc0, 0x78, 0x85, 0x94, 0x06, 0x56, 0x48, 0x29, 0xcd, 0x56, - 0xc0, 0x0a, 0x29, 0xab, 0xa7, 0xb5, 0x8c, 0x55, 0x48, 0x21, 0xb6, 0x4d, 0x43, 0x55, 0xf5, 0x03, - 0xa7, 0x84, 0xc0, 0xa7, 0xe9, 0x9b, 0x19, 0x6b, 0x82, 0x61, 0xde, 0x7f, 0x5f, 0x49, 0xb8, 0x4c, - 0x33, 0x70, 0xec, 0x1a, 0x1b, 0x56, 0x2e, 0x8a, 0x3c, 0xc2, 0xb0, 0x30, 0x70, 0xe4, 0x10, 0x86, - 0x85, 0x2d, 0x8c, 0xfc, 0x49, 0x4f, 0x4b, 0x3f, 0x08, 0x3c, 0x4a, 0x78, 0x09, 0x2d, 0x2b, 0xeb, - 0xf5, 0x35, 0x8e, 0x4d, 0x26, 0xce, 0x0d, 0x15, 0x8a, 0xc9, 0x24, 0x0a, 0x6e, 0x64, 0x4b, 0xde, - 0x18, 0xec, 0x80, 0xf2, 0xa8, 0xb3, 0x5f, 0xbe, 0x2f, 0x64, 0xf5, 0x5d, 0xaf, 0xd5, 0x50, 0x79, - 0xa3, 0xf2, 0x46, 0xe5, 0x8d, 0xca, 0x7b, 0xdd, 0x95, 0x77, 0xc4, 0xb8, 0xaa, 0x77, 0x4a, 0xd0, - 0xdd, 0x1d, 0x6c, 0x37, 0xfd, 0xf6, 0x8b, 0x60, 0xbb, 0x69, 0x23, 0x7b, 0x1d, 0xdb, 0x4d, 0x6b, - 0xda, 0x2a, 0xad, 0xda, 0x2e, 0xf6, 0x9b, 0x86, 0xa1, 0x9a, 0xcc, 0x8f, 0x7e, 0xbd, 0xc6, 0xc6, - 0x98, 0x1d, 0x09, 0x11, 0x9b, 0x43, 0x93, 0xfc, 0xa4, 0x12, 0x2a, 0x4c, 0x3f, 0xbf, 0x23, 0x9a, - 0x1a, 0x68, 0x6a, 0xa0, 0xa9, 0x81, 0xa6, 0x06, 0x28, 0x53, 0x63, 0xa7, 0x04, 0x4b, 0xa3, 0x8d, - 0x96, 0xc6, 0x92, 0x5a, 0x1a, 0x35, 0xc4, 0x8e, 0x68, 0x69, 0xcc, 0xb7, 0x55, 0x1a, 0x6d, 0x34, - 0x34, 0xd0, 0xd0, 0x40, 0x43, 0x23, 0x14, 0x94, 0xfa, 0xa1, 0x32, 0x6f, 0x5f, 0x4c, 0x6e, 0x04, - 0xd9, 0xaf, 0x13, 0xe3, 0x48, 0x74, 0xec, 0xa0, 0xb5, 0x85, 0xd6, 0x16, 0x5a, 0x5b, 0xeb, 0x6e, - 0x6d, 0x61, 0x54, 0x46, 0x99, 0xfa, 0xb9, 0xea, 0x50, 0x8f, 0xdc, 0x97, 0xa6, 0xa5, 0xc7, 0xb7, - 0x83, 0xac, 0xab, 0x31, 0x02, 0x03, 0x15, 0x35, 0x2a, 0x6a, 0x54, 0xd4, 0x6b, 0xaf, 0xa8, 0x31, - 0x02, 0x63, 0xee, 0x3f, 0xc8, 0x8b, 0x16, 0xbb, 0x1f, 0xf2, 0xa2, 0x5a, 0xb7, 0xca, 0x22, 0x78, - 0xd1, 0x66, 0xa7, 0x86, 0xbb, 0x05, 0x86, 0x6a, 0x32, 0x3f, 0xfa, 0x7a, 0x13, 0xa3, 0x65, 0x45, - 0x5e, 0x98, 0x8e, 0xb8, 0xc0, 0x90, 0x77, 0x34, 0xb8, 0xd0, 0xe0, 0x42, 0x83, 0x0b, 0x0d, 0x2e, - 0x8c, 0x43, 0x41, 0x7b, 0xab, 0x0c, 0x10, 0x8d, 0x11, 0xef, 0x68, 0x6f, 0xcd, 0xb9, 0x55, 0x4a, - 0xab, 0xd9, 0x8a, 0xe6, 0x16, 0x9a, 0x5b, 0x4b, 0x6c, 0x6e, 0xdd, 0x30, 0xa1, 0x22, 0xe2, 0x55, - 0xc7, 0x85, 0xa8, 0xcc, 0x5b, 0x5d, 0xcf, 0x6f, 0x88, 0x66, 0x06, 0x9a, 0x19, 0x68, 0x66, 0xa0, - 0x99, 0x01, 0xc6, 0xcc, 0x60, 0xa1, 0x61, 0xd9, 0x35, 0x2d, 0xbf, 0xea, 0xbb, 0x06, 0xef, 0x31, - 0x9e, 0x33, 0xf0, 0xb6, 0xc6, 0xe3, 0xca, 0xdc, 0xb4, 0x4a, 0x58, 0x9b, 0x99, 0x35, 0xda, 0x29, - 0xa7, 0x54, 0xad, 0xa2, 0x82, 0x97, 0xd6, 0x0e, 0xa4, 0xb2, 0xb1, 0xf1, 0xb5, 0x56, 0xdd, 0xbd, - 0xfe, 0xf9, 0xb5, 0x5e, 0xdd, 0xbd, 0x1e, 0x7d, 0xac, 0x27, 0xff, 0x8c, 0x3e, 0x37, 0xbe, 0xd6, - 0xaa, 0xad, 0xc9, 0xe7, 0xf6, 0xd7, 0x5a, 0xb5, 0x7d, 0xbd, 0x79, 0x75, 0xb5, 0xb5, 0xf9, 0xa3, - 0xf9, 0x90, 0xfd, 0xc2, 0x8d, 0x7f, 0x7d, 0xbd, 0xba, 0x0a, 0x7f, 0x7c, 0x7e, 0x88, 0xff, 0x3e, - 0x79, 0xb8, 0xfe, 0xcf, 0xe6, 0xef, 0x15, 0x6c, 0xd7, 0xbf, 0x3c, 0xa7, 0xaa, 0x83, 0xa7, 0x4a, - 0xdb, 0xa9, 0xea, 0xfe, 0x8c, 0xf7, 0x3e, 0xa9, 0xba, 0x7b, 0xd5, 0xa3, 0xeb, 0x1f, 0xb5, 0xf7, - 0xad, 0x87, 0xcd, 0xee, 0xe6, 0xc6, 0xf3, 0xdf, 0x75, 0x37, 0x7f, 0xd4, 0xde, 0xb7, 0x1f, 0x36, - 0x36, 0x5e, 0xf8, 0x9f, 0xdf, 0x5f, 0x1a, 0x63, 0xf3, 0xe7, 0xc6, 0xc6, 0xc6, 0xf8, 0x3c, 0x3d, - 0x39, 0x63, 0x5f, 0x6b, 0xf5, 0xeb, 0xdf, 0x93, 0x8f, 0xa3, 0xbf, 0xd3, 0x53, 0x3a, 0xd7, 0x97, - 0x37, 0x5f, 0x3c, 0x9b, 0xef, 0x4b, 0x13, 0x41, 0xff, 0xdb, 0xbd, 0xfe, 0x4f, 0x77, 0xf3, 0x47, - 0xe7, 0x61, 0xf2, 0x39, 0xf9, 0x7b, 0xf3, 0xe7, 0xc6, 0xd6, 0x6f, 0x57, 0x57, 0x5b, 0x5b, 0xbf, - 0x6d, 0x8e, 0x5e, 0x7c, 0xfc, 0xbd, 0xdf, 0x46, 0xff, 0xfb, 0x7b, 0xb7, 0x3b, 0xf3, 0xab, 0xcd, - 0x8d, 0x7f, 0x6d, 0xad, 0x82, 0x58, 0x81, 0x66, 0x04, 0x1b, 0x82, 0x7b, 0x27, 0x4c, 0xaa, 0x3d, - 0xa5, 0x0c, 0x77, 0xc8, 0x3c, 0x65, 0xfc, 0xd0, 0x4b, 0xea, 0x63, 0x19, 0xe6, 0x6d, 0x2a, 0xa7, - 0xe4, 0x6e, 0xea, 0x4e, 0xf5, 0x9d, 0x56, 0xab, 0xb3, 0xdd, 0x6a, 0xd5, 0xb6, 0x9b, 0xdb, 0xb5, - 0xdd, 0x76, 0xbb, 0xde, 0xa9, 0x9b, 0x24, 0x9d, 0xcf, 0x84, 0x43, 0x05, 0x75, 0x3e, 0xde, 0x57, - 0xba, 0x16, 0x8f, 0x3c, 0x0f, 0xe9, 0x90, 0xaa, 0xc7, 0xf8, 0xf7, 0xaa, 0x17, 0xd8, 0x65, 0x14, - 0x62, 0x7b, 0xe1, 0x9e, 0x48, 0x8a, 0x20, 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, 0x8a, 0x20, - 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, 0x8a, 0x20, 0x29, 0x82, 0xa4, 0x08, 0x92, 0x22, 0x48, - 0x8a, 0xac, 0x04, 0x29, 0x02, 0xca, 0x14, 0x4e, 0xba, 0x57, 0x89, 0x2a, 0x73, 0xca, 0xb3, 0x84, - 0x1f, 0x6f, 0x89, 0x86, 0x30, 0x1a, 0xc2, 0x68, 0x08, 0xa3, 0x21, 0x0c, 0xc6, 0x10, 0xc6, 0x20, - 0xe4, 0x25, 0x42, 0xeb, 0x18, 0x84, 0x6c, 0x64, 0xab, 0x63, 0x10, 0xb2, 0xa6, 0xad, 0x82, 0xc5, - 0xf0, 0x20, 0x19, 0x03, 0x68, 0x6a, 0x58, 0xcb, 0xdf, 0x04, 0x38, 0x1a, 0xc4, 0x00, 0x88, 0x3a, - 0x46, 0xd4, 0x97, 0x61, 0xf3, 0x67, 0xae, 0x36, 0xe4, 0x37, 0x1e, 0xe1, 0xdd, 0xe9, 0x8e, 0xc2, - 0x09, 0xd0, 0xeb, 0x26, 0x7d, 0x85, 0x47, 0x1f, 0x1f, 0xbb, 0x0b, 0x3f, 0xf9, 0x79, 0xa6, 0xc7, - 0xb0, 0x89, 0x7e, 0xb3, 0xe9, 0x3b, 0x1d, 0x50, 0x69, 0x0b, 0x16, 0x8e, 0xdb, 0x31, 0x57, 0xf6, - 0x1c, 0x87, 0xc5, 0x9f, 0x89, 0x67, 0x7d, 0x39, 0x3f, 0xef, 0x59, 0x0e, 0x51, 0xc4, 0x72, 0x03, - 0x61, 0x1d, 0xf7, 0x6e, 0x3a, 0xd6, 0xe3, 0x1b, 0x1b, 0x36, 0xf8, 0xea, 0x68, 0xf0, 0xa1, 0xc1, - 0x87, 0x06, 0xdf, 0xea, 0x1b, 0x7c, 0xa6, 0xda, 0xea, 0xce, 0xb0, 0x63, 0x25, 0x04, 0x8a, 0xbc, - 0x4a, 0x93, 0x19, 0x0f, 0x18, 0x79, 0x4d, 0x9a, 0x1f, 0x05, 0x62, 0x24, 0xc6, 0x03, 0xfe, 0x5c, - 0x80, 0xbf, 0xb7, 0x24, 0x55, 0xd2, 0x52, 0x43, 0x6a, 0x8d, 0x1f, 0xd3, 0x8a, 0x1f, 0xd3, 0x4a, - 0x1e, 0xf3, 0x8a, 0x97, 0xe3, 0x32, 0x31, 0xcc, 0xef, 0x95, 0x26, 0xf6, 0xcb, 0x14, 0xff, 0xa5, - 0xab, 0x81, 0xb2, 0xd5, 0xc1, 0xc2, 0xd4, 0xc2, 0xc2, 0xd4, 0xc3, 0x22, 0xd4, 0x44, 0x49, 0x66, - 0x98, 0xe1, 0xf3, 0x66, 0x9c, 0x2f, 0x9c, 0x39, 0x6d, 0xa5, 0x04, 0xd0, 0xcc, 0xc0, 0xe1, 0xdd, - 0x12, 0xee, 0x55, 0x4a, 0x40, 0x8d, 0x59, 0x0b, 0xed, 0x8d, 0x95, 0x2b, 0x35, 0xc0, 0x66, 0x66, - 0x0d, 0x77, 0x4a, 0xbc, 0x67, 0xd9, 0xa1, 0x01, 0xe9, 0x8d, 0x57, 0x3e, 0xf0, 0xc6, 0x2c, 0x0d, - 0x54, 0xb2, 0xfc, 0x5c, 0xec, 0x69, 0xec, 0xe0, 0x69, 0x34, 0x7e, 0x1a, 0x31, 0x60, 0x27, 0x8f, - 0x08, 0x83, 0x17, 0xb8, 0x53, 0xb2, 0x58, 0xc2, 0x40, 0xa4, 0x72, 0xd9, 0x97, 0x25, 0xf7, 0x0e, - 0x5c, 0xeb, 0xf6, 0x0e, 0x70, 0x1e, 0x28, 0x32, 0x66, 0x31, 0xf4, 0x2b, 0xa7, 0x8a, 0xb4, 0x87, - 0xd4, 0x27, 0x21, 0x51, 0xc3, 0x11, 0x9d, 0x1f, 0x52, 0x6e, 0x27, 0x14, 0x41, 0x75, 0x8a, 0xd3, - 0x7f, 0xe9, 0xe3, 0x87, 0x69, 0x42, 0x3f, 0xa1, 0xf2, 0x1f, 0x49, 0xfc, 0x5f, 0xd3, 0xf7, 0xef, - 0x96, 0x73, 0xf5, 0x34, 0x02, 0x8c, 0x12, 0x02, 0xd1, 0x4a, 0x0b, 0x40, 0x33, 0x44, 0x4c, 0x19, - 0x23, 0xa2, 0x4c, 0x12, 0x4f, 0xc6, 0x89, 0x26, 0xd3, 0xc4, 0x52, 0x69, 0x44, 0x52, 0x69, 0xc4, - 0x51, 0x19, 0x44, 0xd1, 0x72, 0xfb, 0x8f, 0x8d, 0x11, 0x3f, 0xe9, 0x6e, 0xf7, 0x28, 0x71, 0x05, - 0x75, 0x4d, 0xec, 0xf7, 0x89, 0x0d, 0xb2, 0x6d, 0x60, 0xec, 0xde, 0x58, 0xa9, 0x6d, 0x6d, 0x7d, - 0x18, 0xa9, 0xb4, 0x0f, 0xb3, 0xb2, 0x72, 0x59, 0x75, 0xd1, 0xbb, 0x25, 0xda, 0x69, 0xb1, 0xd0, - 0x30, 0xa9, 0x69, 0xcc, 0x64, 0xc6, 0x9b, 0xcb, 0x84, 0x2f, 0x35, 0xf3, 0xdd, 0x4c, 0xa6, 0xbb, - 0xae, 0x9d, 0x61, 0x08, 0x9d, 0x96, 0x8a, 0x4a, 0x35, 0x8a, 0xb5, 0x8a, 0x54, 0x22, 0xb2, 0x15, - 0x1f, 0xcb, 0xcd, 0xe3, 0xc9, 0x53, 0x7d, 0x3b, 0x4f, 0x9e, 0xea, 0x8b, 0x47, 0xf8, 0xb7, 0xe3, - 0xf0, 0xa6, 0xf3, 0x6d, 0x6f, 0xf4, 0x28, 0xdf, 0xbe, 0x08, 0x11, 0x7e, 0x4a, 0x1e, 0xe2, 0xdd, - 0x72, 0x88, 0x8d, 0x62, 0x23, 0x14, 0xdc, 0x56, 0x15, 0x7a, 0xa7, 0x04, 0xa9, 0x46, 0x5c, 0x2a, - 0xd2, 0xf7, 0xf4, 0x28, 0xb5, 0x8a, 0xa0, 0x2e, 0x15, 0x94, 0xdb, 0xfa, 0x08, 0x7d, 0x8d, 0xfb, - 0x7c, 0xa2, 0x61, 0xcf, 0x8f, 0xf6, 0xad, 0xf6, 0xf6, 0xee, 0x8e, 0x55, 0xb5, 0xbe, 0x8c, 0x5d, - 0xd0, 0xc9, 0x96, 0x11, 0xd6, 0x39, 0x75, 0x22, 0xee, 0x10, 0x6e, 0xdf, 0x5b, 0x3d, 0x11, 0xa8, - 0xc0, 0x0e, 0xbc, 0x2b, 0xbe, 0xf1, 0xe5, 0xfc, 0xbc, 0xb7, 0x69, 0x7d, 0xa1, 0x42, 0xb2, 0x80, - 0x5b, 0xcd, 0x49, 0x58, 0x52, 0xcb, 0x22, 0xdc, 0x49, 0xdc, 0xdb, 0x3a, 0x37, 0xb5, 0x21, 0x4c, - 0x3a, 0x8d, 0x45, 0x1f, 0x17, 0x49, 0x33, 0x38, 0x32, 0x0d, 0x43, 0x9f, 0xc0, 0x4f, 0xfd, 0xab, - 0xb8, 0x6c, 0x80, 0xe2, 0xdd, 0x62, 0xc9, 0xac, 0xa2, 0xf2, 0x45, 0xb3, 0xba, 0x32, 0xaf, 0xa6, - 0x8a, 0x6d, 0x80, 0xfc, 0xcb, 0x95, 0xef, 0xca, 0x9c, 0xcb, 0x33, 0xc1, 0x97, 0xb9, 0x2d, 0x6a, - 0x3d, 0x00, 0x52, 0x1f, 0x60, 0x34, 0x0a, 0x10, 0xf5, 0x00, 0xc2, 0xbc, 0x4b, 0xa5, 0x27, 0x58, - 0xb9, 0xd8, 0xd1, 0x2b, 0x29, 0xf8, 0xb8, 0xa0, 0x2a, 0xfa, 0x45, 0x38, 0xf1, 0x71, 0xcf, 0x8a, - 0xef, 0x61, 0xb9, 0xc4, 0x67, 0xde, 0xbd, 0x35, 0x12, 0x19, 0x91, 0x48, 0x04, 0x53, 0xac, 0x04, - 0xae, 0xb8, 0xb6, 0xe8, 0x62, 0x4d, 0x51, 0xc4, 0xda, 0xd8, 0x3a, 0x9d, 0xec, 0x9c, 0x76, 0x36, - 0x4e, 0x37, 0xd2, 0x31, 0xc6, 0xb6, 0x19, 0x83, 0x35, 0x26, 0xd8, 0xb4, 0xc5, 0x9a, 0x14, 0xba, - 0xa2, 0x6a, 0x2b, 0x89, 0x3a, 0xd6, 0xb6, 0x33, 0x52, 0xf6, 0x3e, 0x1e, 0x55, 0xd3, 0xda, 0x3d, - 0x13, 0x38, 0x87, 0xdc, 0xf6, 0x02, 0xc9, 0xf8, 0x20, 0x16, 0x30, 0x8a, 0x30, 0x4e, 0x45, 0x82, - 0x30, 0x93, 0x28, 0xd8, 0xc4, 0xf2, 0x95, 0xd6, 0x90, 0x70, 0xc7, 0xa3, 0x8e, 0xd5, 0xbf, 0xb7, - 0xd4, 0x90, 0xc9, 0x2b, 0x7e, 0xdc, 0x7b, 0x0c, 0x8c, 0xd5, 0xf5, 0x5c, 0x7a, 0x13, 0x19, 0xb4, - 0x3b, 0x0e, 0x4c, 0x38, 0x0c, 0x8c, 0x39, 0x0a, 0xca, 0x30, 0xc6, 0x8c, 0x38, 0x06, 0xca, 0xb5, - 0xc4, 0x34, 0x3b, 0x02, 0x96, 0x8b, 0x8e, 0x35, 0xc0, 0x92, 0x18, 0x64, 0x4b, 0xf4, 0xb3, 0x26, - 0xa0, 0xd8, 0x13, 0xd3, 0x07, 0xb7, 0x4c, 0x36, 0xa5, 0xb4, 0xb3, 0x0c, 0x8d, 0x5d, 0xd1, 0x2b, - 0x27, 0xf4, 0x8f, 0x76, 0xbd, 0x1a, 0xec, 0x72, 0xc9, 0x74, 0xc6, 0x75, 0x5e, 0x1b, 0x59, 0x0f, - 0xcb, 0x64, 0x94, 0x5d, 0x2a, 0x20, 0x19, 0xb2, 0x3a, 0x39, 0xf2, 0x1d, 0xb3, 0xec, 0x4b, 0x96, - 0xed, 0x8a, 0x8c, 0xca, 0xb8, 0xe8, 0xa2, 0x1a, 0x59, 0xcc, 0x6c, 0x33, 0x3b, 0xff, 0xfc, 0x64, - 0x98, 0x9b, 0x8a, 0x3d, 0x41, 0xe3, 0xd9, 0xe6, 0x24, 0xd5, 0xdd, 0xe3, 0xeb, 0x33, 0xae, 0x46, - 0x3e, 0x93, 0x22, 0xb7, 0xe9, 0x50, 0xc4, 0x44, 0x28, 0x6c, 0x0a, 0x14, 0x45, 0x0e, 0xda, 0xa0, - 0xbd, 0x36, 0xb5, 0xaf, 0x03, 0xaa, 0x9b, 0x3d, 0xed, 0x79, 0x59, 0x83, 0x8a, 0x13, 0x8d, 0x92, - 0xa2, 0xaa, 0x0e, 0x55, 0xd4, 0x56, 0x55, 0x25, 0x08, 0x97, 0xfe, 0xa8, 0x7e, 0x49, 0xce, 0xe5, - 0x9b, 0xec, 0x9f, 0xd7, 0x87, 0xce, 0xb9, 0x0a, 0x3a, 0x9a, 0x7d, 0x57, 0xea, 0x95, 0x52, 0x75, - 0x6b, 0xb1, 0x60, 0xc4, 0xc2, 0xdc, 0x81, 0x0e, 0xae, 0x40, 0x1b, 0x37, 0xa0, 0xcb, 0xa4, 0xd0, - 0x6e, 0xfb, 0x6b, 0xb7, 0x0f, 0x74, 0xda, 0xf6, 0xe5, 0xba, 0xb6, 0x0a, 0x07, 0xe7, 0x3d, 0xa9, - 0xd2, 0xd6, 0x6c, 0x14, 0xd9, 0x2e, 0xe3, 0xb3, 0x53, 0x20, 0xd4, 0x4e, 0x53, 0x99, 0x35, 0x0d, - 0x6c, 0xac, 0xce, 0x32, 0x69, 0x69, 0x6d, 0x2b, 0x5d, 0x84, 0xa2, 0xa9, 0xca, 0x55, 0xfa, 0x2b, - 0x53, 0x69, 0xa0, 0xa4, 0xb4, 0x96, 0x21, 0x4b, 0x97, 0xa2, 0xd5, 0xd8, 0x6d, 0xed, 0x76, 0xb6, - 0x1b, 0xbb, 0xed, 0xf5, 0x5b, 0x93, 0x05, 0x19, 0xc9, 0xd7, 0xa5, 0x0a, 0x46, 0x8d, 0x24, 0xa6, - 0x46, 0xd2, 0x52, 0xa3, 0x53, 0xf2, 0xfc, 0x68, 0xdf, 0x6a, 0xed, 0x74, 0x1a, 0xdd, 0x51, 0xb9, - 0x91, 0x0b, 0x45, 0x14, 0xf5, 0xa8, 0x94, 0xd6, 0xd8, 0x2c, 0xb6, 0xf6, 0x22, 0x15, 0x3c, 0x71, - 0xfd, 0x2e, 0xb9, 0x07, 0x53, 0x37, 0xab, 0x58, 0x8e, 0x13, 0x33, 0xc7, 0x32, 0xe0, 0x09, 0x2e, - 0x95, 0xe6, 0xba, 0x1f, 0x04, 0xaa, 0x1a, 0xd8, 0x55, 0x3b, 0xf0, 0xc3, 0x84, 0xd7, 0x70, 0xaa, - 0x1e, 0x25, 0x6e, 0x3c, 0xe8, 0x43, 0x59, 0xd4, 0x51, 0x0e, 0xab, 0x9c, 0xf2, 0x58, 0x70, 0x39, - 0xc5, 0xed, 0xba, 0xc9, 0x40, 0x8b, 0xb4, 0xe2, 0xe2, 0xc3, 0x87, 0x86, 0x1c, 0x1a, 0x72, 0x68, - 0xc8, 0x99, 0x37, 0xe4, 0xfa, 0x41, 0xe0, 0x51, 0xc2, 0x35, 0x58, 0x72, 0xf5, 0x3a, 0x0a, 0xfc, - 0xf2, 0x04, 0xbe, 0xaf, 0xa2, 0xe2, 0xc2, 0x3e, 0x1e, 0x04, 0x25, 0x26, 0x4a, 0x4c, 0x94, 0x98, - 0x48, 0x7d, 0x2d, 0x13, 0xf5, 0x55, 0x6f, 0xec, 0x20, 0xfb, 0x85, 0xec, 0x17, 0xb2, 0x5f, 0xc8, - 0x7e, 0x69, 0x63, 0xbf, 0x1a, 0xad, 0x4e, 0xad, 0x6b, 0x25, 0xf1, 0x21, 0x9c, 0xaa, 0x34, 0x34, - 0xeb, 0x7d, 0x1a, 0x93, 0xd5, 0xb1, 0x36, 0x8e, 0x7b, 0x37, 0x9d, 0x4d, 0xeb, 0x22, 0xa4, 0x36, - 0x73, 0x99, 0x9d, 0x80, 0xcb, 0x2b, 0x9e, 0x0e, 0x77, 0x41, 0x93, 0x5d, 0x6b, 0xb5, 0x91, 0x1a, - 0x33, 0x44, 0x8d, 0xe9, 0x5c, 0x23, 0x3c, 0xfb, 0x6b, 0x67, 0x46, 0xad, 0x4b, 0xc8, 0xd5, 0x38, - 0x4a, 0x69, 0x09, 0xe2, 0xad, 0x38, 0x65, 0x83, 0x61, 0x3f, 0x10, 0x32, 0x7f, 0xc8, 0xd5, 0xe3, - 0x10, 0x18, 0x75, 0x65, 0x4c, 0x5d, 0x60, 0xd4, 0x55, 0x89, 0x51, 0x57, 0x93, 0x1d, 0x5d, 0x9c, - 0x9f, 0x49, 0x47, 0x2a, 0x46, 0xd2, 0xd4, 0x91, 0xa4, 0x41, 0x92, 0x06, 0x02, 0x49, 0x53, 0x34, - 0x3d, 0x32, 0x6f, 0xfc, 0xef, 0xab, 0x9b, 0x2e, 0x57, 0x3c, 0xb0, 0xe6, 0x63, 0xa8, 0xed, 0x38, - 0xea, 0x3c, 0x96, 0xda, 0x8f, 0x67, 0x19, 0x86, 0x11, 0x66, 0x3d, 0x2f, 0x84, 0x99, 0xd2, 0x97, - 0xf5, 0xcc, 0x0c, 0xe4, 0x3c, 0x6b, 0x4b, 0x88, 0xd5, 0x5c, 0x9a, 0x14, 0x33, 0x8b, 0x31, 0xb3, - 0xb8, 0x2c, 0xf1, 0xa0, 0x47, 0x4c, 0x68, 0x12, 0x17, 0xe9, 0x8b, 0x6a, 0x2f, 0x25, 0xfa, 0x62, - 0x8f, 0x83, 0x2a, 0x0f, 0xaa, 0xff, 0x17, 0x70, 0x9d, 0xd9, 0xa9, 0x26, 0x7a, 0x19, 0x18, 0xeb, - 0x55, 0x80, 0xbd, 0x08, 0x5e, 0x9e, 0x14, 0xfd, 0xbd, 0x06, 0x34, 0x3f, 0xe2, 0xe3, 0x7c, 0x77, - 0xaf, 0xae, 0xb6, 0xae, 0x7f, 0xab, 0x2c, 0x5b, 0x82, 0xee, 0x92, 0x57, 0xf5, 0xd4, 0xce, 0x58, - 0xea, 0x97, 0xa6, 0x3a, 0x5c, 0x82, 0xa3, 0x1e, 0x87, 0xe4, 0x9e, 0x8a, 0xb4, 0xab, 0x8b, 0x76, - 0x0c, 0xf5, 0xc2, 0x3d, 0x10, 0x53, 0x21, 0xa6, 0x42, 0x4c, 0xb5, 0x74, 0x98, 0xea, 0x94, 0x70, - 0x87, 0xa8, 0x40, 0xdc, 0x6b, 0x2c, 0x81, 0x64, 0x0e, 0xa7, 0x85, 0xc3, 0x7b, 0x69, 0xa0, 0x17, - 0x15, 0x30, 0x7c, 0x36, 0x0d, 0xac, 0x1a, 0x0f, 0x1b, 0xdd, 0xa7, 0x3f, 0x6f, 0xfe, 0xa6, 0xb3, - 0x8d, 0x11, 0xaa, 0x7e, 0x2c, 0x7d, 0xbd, 0xdc, 0xa5, 0x69, 0x53, 0x7f, 0x61, 0xfa, 0x29, 0x97, - 0x3f, 0x54, 0xdf, 0x7c, 0x17, 0x98, 0x6b, 0x1d, 0x84, 0x96, 0x3e, 0x22, 0x4b, 0x13, 0xd8, 0x42, - 0x9e, 0x7a, 0xa9, 0x40, 0x14, 0xf2, 0xd4, 0xe5, 0x03, 0x19, 0x03, 0xbd, 0x6a, 0x74, 0xf6, 0xa6, - 0x99, 0xee, 0x45, 0x33, 0x2a, 0x32, 0x3c, 0xee, 0x48, 0x33, 0x29, 0x46, 0x0c, 0x51, 0x94, 0x8e, - 0xba, 0xb9, 0x69, 0x93, 0xa6, 0xa3, 0xe1, 0x96, 0xcc, 0xf1, 0xd7, 0x40, 0x81, 0x8a, 0x02, 0x15, - 0x90, 0x40, 0x45, 0xc7, 0x1f, 0x92, 0x54, 0x48, 0x52, 0x21, 0x49, 0xb5, 0x34, 0x84, 0x12, 0x3a, - 0xfe, 0xa6, 0x89, 0x25, 0x74, 0xfc, 0xbd, 0x34, 0x29, 0xe8, 0xf8, 0x5b, 0x3c, 0xf9, 0xa5, 0x01, - 0x4e, 0x32, 0x39, 0x6e, 0x0d, 0x69, 0x00, 0x39, 0xa4, 0x43, 0x23, 0x80, 0x40, 0x00, 0x81, 0x00, - 0x62, 0x8d, 0x00, 0x04, 0xf5, 0x43, 0x75, 0x6f, 0x02, 0x31, 0x34, 0x31, 0xe4, 0x20, 0x1b, 0xb3, - 0x86, 0x21, 0x07, 0x28, 0x8c, 0x51, 0x18, 0x03, 0x10, 0xc6, 0x18, 0x72, 0x80, 0x21, 0x07, 0xeb, - 0x62, 0x74, 0x4c, 0x5c, 0xd2, 0x55, 0x3d, 0xde, 0x88, 0x99, 0xdd, 0xf9, 0x6c, 0x7c, 0xd4, 0x78, - 0xa8, 0xf1, 0x50, 0xe3, 0xad, 0x93, 0xf9, 0xc1, 0x23, 0x9f, 0x6a, 0xab, 0xcf, 0x3b, 0xa3, 0x9c, - 0x5a, 0x1a, 0xc7, 0x3c, 0xe4, 0x91, 0xaf, 0x31, 0xa0, 0x0a, 0xbb, 0xd5, 0x69, 0xfd, 0xf3, 0xbc, - 0x30, 0x74, 0xbd, 0x6b, 0x7d, 0x1e, 0xeb, 0x16, 0xeb, 0x80, 0x49, 0x3b, 0xb8, 0xa1, 0xe2, 0x7e, - 0xdc, 0xa4, 0xcc, 0xba, 0x79, 0x56, 0x7d, 0x65, 0x54, 0x6f, 0x65, 0x52, 0x6a, 0x65, 0x7b, 0xab, - 0xb9, 0xd5, 0xc0, 0x1e, 0x75, 0x8b, 0x15, 0xae, 0x2f, 0x0a, 0x59, 0x5d, 0x6b, 0x8b, 0x9d, 0xe9, - 0x00, 0x42, 0xd1, 0x40, 0xb0, 0x81, 0xce, 0xda, 0x7c, 0x29, 0x60, 0x1a, 0x8d, 0x8b, 0xd0, 0x13, - 0xa1, 0x27, 0x42, 0xcf, 0x35, 0x82, 0x9e, 0xa9, 0xe9, 0xa9, 0x55, 0x00, 0x40, 0x81, 0x9f, 0x18, - 0xcf, 0xff, 0x64, 0x3c, 0xb3, 0xf1, 0xfc, 0x23, 0x72, 0x03, 0x54, 0x77, 0xd6, 0xbc, 0x15, 0x6f, - 0xfe, 0x4b, 0xef, 0x0b, 0xc5, 0xa2, 0x55, 0x4e, 0x98, 0x54, 0x7b, 0x4a, 0x15, 0xac, 0x9b, 0x73, - 0xca, 0xf8, 0xa1, 0x47, 0x63, 0x09, 0x59, 0xb0, 0x1c, 0x6b, 0xe5, 0x94, 0xdc, 0x4d, 0x8d, 0x54, - 0xdf, 0x69, 0xb5, 0x3a, 0xdb, 0xad, 0x56, 0x6d, 0xbb, 0xb9, 0x5d, 0xdb, 0x6d, 0xb7, 0xeb, 0x9d, - 0x7a, 0x81, 0x22, 0xb2, 0x95, 0x33, 0xe1, 0x50, 0x41, 0x9d, 0x8f, 0xf1, 0x9c, 0xf1, 0xc8, 0xf3, - 0x40, 0x56, 0x4a, 0x34, 0x7a, 0x76, 0xca, 0xe8, 0xa4, 0x3b, 0x31, 0x26, 0xb0, 0x95, 0xae, 0xa9, - 0xe5, 0x5c, 0x86, 0xd2, 0x8e, 0xf9, 0x18, 0xec, 0x42, 0xf1, 0xf3, 0x85, 0x4b, 0x3a, 0x36, 0xb0, - 0xa4, 0xe3, 0x02, 0xd1, 0x37, 0x36, 0xd2, 0xcd, 0xb3, 0x7f, 0xb0, 0x91, 0x2e, 0x76, 0x13, 0x31, - 0x62, 0xc6, 0x63, 0xa1, 0x4a, 0x73, 0x58, 0x10, 0xbb, 0x89, 0xbc, 0xf0, 0x07, 0x1b, 0xe9, 0xe6, - 0xdd, 0x0b, 0xd8, 0x4a, 0x64, 0x0d, 0xd6, 0x04, 0x5b, 0x89, 0x64, 0x1c, 0x0b, 0x1b, 0xe9, 0xea, - 0x86, 0x04, 0x2f, 0x41, 0x03, 0x6c, 0xa4, 0xbb, 0xa2, 0x27, 0x18, 0xfb, 0xce, 0x66, 0x1d, 0x04, - 0xfb, 0xce, 0xa2, 0xdd, 0x83, 0x76, 0x4f, 0x39, 0x76, 0xcf, 0xe2, 0xfb, 0xce, 0x62, 0x9b, 0x56, - 0x14, 0x30, 0x28, 0x60, 0x90, 0x58, 0x41, 0x62, 0x25, 0xaf, 0x35, 0x8f, 0x6d, 0x5a, 0x91, 0x5b, - 0x41, 0x6e, 0x05, 0xb9, 0x15, 0x9d, 0xdc, 0x0a, 0xb6, 0x69, 0x5d, 0x7e, 0xe2, 0x05, 0xdb, 0xb4, - 0x96, 0xc9, 0xca, 0xac, 0x4b, 0xf4, 0x4b, 0x8e, 0xa8, 0x3f, 0x33, 0x91, 0x2f, 0x11, 0xe7, 0x91, - 0xdf, 0xa7, 0x22, 0x07, 0xad, 0xf5, 0x88, 0x3e, 0x1f, 0xc7, 0x58, 0x93, 0xb6, 0xa6, 0x2e, 0xc6, - 0xc0, 0xbc, 0x64, 0x79, 0xb9, 0x2b, 0x13, 0x03, 0x53, 0xb0, 0xb7, 0xa2, 0x9e, 0x9e, 0x8a, 0x2b, - 0xd7, 0xd2, 0xd4, 0x45, 0x42, 0xa3, 0xa4, 0x63, 0xb5, 0x18, 0x42, 0xa3, 0x70, 0x4b, 0xd3, 0xa2, - 0x1e, 0x96, 0x99, 0x5d, 0x57, 0xcc, 0xd3, 0xf2, 0xf8, 0x62, 0x1a, 0x3c, 0x2e, 0xe9, 0x60, 0x89, - 0x19, 0x58, 0x0c, 0x0b, 0x5e, 0x63, 0xf1, 0x7b, 0xe3, 0x02, 0xa7, 0x0c, 0xb3, 0x08, 0x68, 0xad, - 0x66, 0x17, 0x8b, 0xdf, 0x3f, 0xdf, 0x6d, 0xc5, 0x5d, 0x3c, 0x33, 0x5a, 0xbf, 0xbe, 0x52, 0x59, - 0x54, 0xc6, 0xda, 0xd0, 0x40, 0xc9, 0x7e, 0x5a, 0xc2, 0x94, 0x9a, 0x47, 0xc3, 0xad, 0x50, 0x5b, - 0x99, 0x72, 0xbc, 0x8b, 0xe9, 0x7b, 0x54, 0x05, 0x75, 0x8b, 0x23, 0xf3, 0xa7, 0xc3, 0x21, 0x40, - 0x47, 0x80, 0x8e, 0x00, 0xdd, 0xb8, 0x5d, 0xac, 0xd7, 0x3e, 0xd6, 0x74, 0x0c, 0x11, 0xce, 0x22, - 0x9c, 0x85, 0x0d, 0x67, 0xf5, 0xb5, 0x1e, 0x99, 0x28, 0x45, 0x03, 0x75, 0xc4, 0xd3, 0xa1, 0xb1, - 0x9a, 0xca, 0xd2, 0x08, 0x03, 0x53, 0x42, 0xc1, 0xb8, 0x70, 0x30, 0x2e, 0x24, 0x4c, 0x0a, 0x0b, - 0x3d, 0x42, 0x43, 0x93, 0xf0, 0xd0, 0x6f, 0x13, 0xcf, 0xec, 0x56, 0x7d, 0x8d, 0xe1, 0x66, 0x34, - 0xfe, 0xb6, 0xde, 0x0a, 0xb3, 0x63, 0x93, 0x2a, 0x5e, 0xe6, 0xee, 0x94, 0x09, 0xf5, 0xec, 0x17, - 0xe3, 0x9f, 0x93, 0xe2, 0x01, 0xd8, 0x42, 0x76, 0x39, 0x4e, 0x82, 0x8e, 0x48, 0x25, 0x19, 0xf5, - 0x0d, 0x2a, 0xc0, 0x27, 0xa3, 0xa3, 0x0e, 0x44, 0x1d, 0x88, 0x3a, 0x10, 0x75, 0x20, 0x58, 0x1d, - 0xf8, 0xf5, 0x51, 0x07, 0xfe, 0x8f, 0x1d, 0x09, 0x41, 0xb9, 0xda, 0xd8, 0xfc, 0xb0, 0xb5, 0xf5, - 0x48, 0x37, 0x5e, 0x8f, 0x2f, 0x99, 0x96, 0x7b, 0xf2, 0x85, 0xdf, 0xa5, 0x23, 0x3b, 0xf4, 0x0e, - 0xd5, 0x29, 0x56, 0x70, 0x5b, 0xee, 0x0a, 0x6e, 0x53, 0x94, 0xf9, 0x13, 0x06, 0x19, 0x70, 0x5f, - 0x76, 0x6c, 0x26, 0x8c, 0x8c, 0x1e, 0x32, 0x7a, 0xc8, 0xe8, 0x21, 0xa3, 0x87, 0xd6, 0x0c, 0x5a, - 0x33, 0x68, 0xcd, 0x20, 0xa3, 0x87, 0x84, 0x16, 0x12, 0x5a, 0xa8, 0x02, 0x50, 0x05, 0xa0, 0x0a, - 0x40, 0x42, 0x6b, 0x29, 0x08, 0x2d, 0xe4, 0x73, 0x4a, 0xe7, 0x73, 0xd6, 0xa8, 0x2e, 0xff, 0x72, - 0x47, 0xa6, 0xea, 0x08, 0xd4, 0xb4, 0xb2, 0x94, 0x7c, 0xff, 0x33, 0xbd, 0xf7, 0xb7, 0xf4, 0x4b, - 0xe7, 0xd4, 0x5d, 0xe6, 0xd8, 0xd8, 0x62, 0x14, 0x9e, 0x16, 0xea, 0x4e, 0x5b, 0x2c, 0x6c, 0x03, - 0x63, 0x61, 0xcd, 0x41, 0x2d, 0x8c, 0x85, 0xd5, 0x46, 0xb1, 0x61, 0xb2, 0xda, 0x9c, 0x7f, 0x30, - 0x59, 0xad, 0x3c, 0xdb, 0x0f, 0x7d, 0x01, 0x98, 0xac, 0xf6, 0xf6, 0x6e, 0x5b, 0xbe, 0x64, 0x35, - 0x44, 0xca, 0x1a, 0x90, 0x72, 0x01, 0x93, 0x05, 0x4b, 0xb5, 0xcc, 0x31, 0xc1, 0x95, 0x5c, 0xc8, - 0x3c, 0xab, 0xd1, 0x61, 0xac, 0x2a, 0xcc, 0x3b, 0x8d, 0x0b, 0x95, 0x77, 0x81, 0x34, 0x2e, 0x4c, - 0x25, 0x53, 0x7f, 0xa7, 0xb9, 0x56, 0x61, 0xbe, 0xa9, 0x7f, 0x7b, 0x22, 0xe7, 0x98, 0xc4, 0x8c, - 0x26, 0x5b, 0x2e, 0x13, 0x2d, 0xa3, 0x49, 0x96, 0xd9, 0x04, 0xcb, 0x83, 0x84, 0xa6, 0x11, 0x4f, - 0xbc, 0x94, 0x59, 0x56, 0x31, 0x27, 0xb6, 0x29, 0x8c, 0x61, 0x0a, 0x63, 0x95, 0xe7, 0x98, 0x24, - 0x79, 0xf1, 0x05, 0x1d, 0xdc, 0xac, 0x66, 0x4f, 0x25, 0x79, 0xd8, 0xdc, 0xb5, 0xa1, 0x32, 0xae, - 0x71, 0x01, 0xc0, 0xbf, 0xf0, 0xaa, 0x50, 0x39, 0x5e, 0xd5, 0x5a, 0x8b, 0xba, 0x50, 0xd9, 0xb6, - 0x7b, 0x39, 0x00, 0x23, 0x37, 0xa8, 0x9e, 0xaa, 0x7a, 0x96, 0xaf, 0xdf, 0x45, 0x2a, 0x95, 0x77, - 0x73, 0x5c, 0x3b, 0x7e, 0xec, 0x7c, 0x86, 0xbd, 0xa6, 0x42, 0xc3, 0xf5, 0x8e, 0x86, 0x42, 0xc3, - 0x1d, 0x2c, 0x34, 0xfc, 0x6c, 0x30, 0xec, 0xe0, 0x54, 0x68, 0x29, 0x4c, 0x54, 0x19, 0xee, 0xb4, - 0xdb, 0x4d, 0x2c, 0x30, 0x5c, 0xd6, 0xd5, 0xa5, 0x16, 0x18, 0xd6, 0x20, 0x0b, 0xa5, 0x12, 0x8c, - 0x0f, 0x74, 0x34, 0x75, 0xd8, 0x29, 0xc9, 0x66, 0xbf, 0x46, 0xd3, 0xf2, 0x4d, 0xd3, 0x32, 0x03, - 0x89, 0x32, 0x87, 0x21, 0xf8, 0xae, 0xc0, 0x84, 0x54, 0xf6, 0xa2, 0x41, 0x8c, 0xa2, 0x12, 0x17, - 0xc3, 0xdb, 0xba, 0x2e, 0xa3, 0x21, 0x39, 0x57, 0x4c, 0x5c, 0x3c, 0x23, 0xdd, 0xa9, 0xd9, 0x99, - 0xd7, 0xf0, 0x3c, 0xa0, 0xd2, 0x16, 0x2c, 0x1c, 0xaf, 0x61, 0xe5, 0xb8, 0x77, 0xd3, 0xb2, 0x88, - 0xe3, 0x08, 0xcb, 0x25, 0x3e, 0xf3, 0xee, 0xad, 0x27, 0xcd, 0xaa, 0x2c, 0x37, 0x10, 0x57, 0xfc, - 0xf1, 0x41, 0x4c, 0x5b, 0xb7, 0xb5, 0x72, 0xac, 0xdb, 0x4c, 0xed, 0x3b, 0x56, 0xc7, 0xb6, 0xcd, - 0xd2, 0x7e, 0x63, 0xc1, 0x96, 0x2d, 0x0b, 0x6f, 0x5a, 0xf9, 0x2d, 0xdb, 0xe4, 0xea, 0xac, 0xf5, - 0x68, 0x9f, 0x9e, 0x8b, 0x1e, 0x11, 0xc4, 0xa7, 0x8a, 0x0a, 0x19, 0x9f, 0x01, 0x4b, 0x0d, 0xa9, - 0x95, 0x1e, 0x15, 0x2a, 0xe5, 0xf8, 0xb4, 0x6c, 0xad, 0x4b, 0x55, 0x65, 0xec, 0x2c, 0x6e, 0x2d, - 0xa6, 0xb3, 0xb8, 0xee, 0x03, 0xab, 0x83, 0x20, 0x5d, 0x6e, 0x75, 0xd6, 0x41, 0x75, 0x86, 0xea, - 0x6c, 0xf9, 0xd4, 0x59, 0xa7, 0x90, 0x3a, 0xeb, 0x18, 0x51, 0x67, 0x1d, 0x54, 0x67, 0xa8, 0xce, - 0x56, 0x5c, 0x9d, 0xfd, 0xf2, 0x1b, 0xd7, 0x6f, 0x99, 0x79, 0xd9, 0xec, 0x5d, 0x3d, 0x76, 0x6e, - 0x65, 0x2e, 0x17, 0xe5, 0x5b, 0x5e, 0xd3, 0x5f, 0x2f, 0xe5, 0xeb, 0xd3, 0xf2, 0x0b, 0x19, 0x38, - 0xa7, 0x63, 0x34, 0x93, 0x43, 0x74, 0x4e, 0x11, 0x32, 0xb7, 0x03, 0x34, 0x8b, 0x88, 0xc8, 0x1c, - 0xe2, 0x95, 0x55, 0x04, 0xe4, 0x3e, 0xf2, 0xb9, 0x8f, 0x78, 0x9e, 0x10, 0xab, 0x62, 0x4c, 0xc8, - 0xbc, 0xba, 0xb0, 0x42, 0x1c, 0x9f, 0xf1, 0x6a, 0xbc, 0x27, 0x22, 0x99, 0xdd, 0xb9, 0xfe, 0xe4, - 0xea, 0x6c, 0xb0, 0xad, 0xb6, 0xac, 0xb0, 0xcd, 0x5d, 0x4f, 0xd8, 0xe6, 0x2e, 0x0a, 0xb6, 0x9d, - 0x12, 0xee, 0x10, 0x15, 0x88, 0xfb, 0x0c, 0x58, 0x3e, 0xb3, 0x33, 0x72, 0x2a, 0x64, 0x38, 0xf2, - 0x69, 0xe6, 0xd6, 0xfb, 0xa9, 0x3c, 0x6c, 0x65, 0xb8, 0xe6, 0x90, 0x47, 0xfe, 0xfc, 0x25, 0x6a, - 0xe6, 0x9d, 0xae, 0x02, 0x7d, 0xfe, 0x0a, 0xf4, 0xf5, 0x2b, 0x80, 0xec, 0x92, 0x9e, 0x70, 0x3b, - 0x9d, 0x66, 0xd7, 0xba, 0x8c, 0xf1, 0x6d, 0xaa, 0x66, 0xad, 0x4f, 0x22, 0x88, 0x42, 0xeb, 0xf4, - 0xf8, 0xa3, 0x55, 0xb5, 0x98, 0xbb, 0x17, 0x8b, 0x92, 0x8b, 0x2c, 0x92, 0xc4, 0x14, 0x0c, 0x2c, - 0xda, 0x7a, 0xcf, 0x0c, 0x12, 0xcc, 0x31, 0x8d, 0x4b, 0x03, 0x1b, 0xaf, 0x4b, 0x0c, 0x13, 0xb3, - 0x83, 0x28, 0x9e, 0x9b, 0x1c, 0xca, 0x2c, 0xbd, 0x72, 0x45, 0xf8, 0x07, 0x54, 0x64, 0xcb, 0xce, - 0x3f, 0xf0, 0x6a, 0x5f, 0x04, 0xc4, 0xb1, 0x89, 0x54, 0xd5, 0xf0, 0xbb, 0x92, 0x05, 0xc8, 0x88, - 0x99, 0xa1, 0xd6, 0x23, 0x84, 0x0c, 0x1b, 0x0b, 0x16, 0x3e, 0x04, 0x39, 0x85, 0x7f, 0xe9, 0xe1, - 0x63, 0x63, 0xf1, 0xdc, 0x69, 0x15, 0x08, 0x21, 0xdb, 0xc9, 0x71, 0x69, 0xb1, 0xe0, 0xa9, 0x02, - 0x61, 0x13, 0x3a, 0x82, 0xa5, 0x74, 0x05, 0x49, 0x69, 0x8f, 0xc6, 0xd1, 0x17, 0x85, 0x53, 0xa4, - 0x92, 0x9f, 0x8e, 0x20, 0xa8, 0xc7, 0x86, 0xf7, 0x3b, 0xad, 0x56, 0x67, 0xbb, 0xd5, 0xaa, 0x6d, - 0x37, 0xb7, 0x6b, 0xbb, 0xed, 0x76, 0xbd, 0x53, 0x6f, 0xaf, 0xee, 0xac, 0x2f, 0x67, 0x04, 0x4e, - 0x46, 0xa9, 0xa4, 0xa1, 0x69, 0xba, 0x86, 0x66, 0xe9, 0x1a, 0x42, 0xab, 0xe6, 0xb1, 0x0e, 0xa6, - 0x3a, 0x6c, 0x5b, 0xcc, 0xfd, 0x63, 0xff, 0x98, 0x7f, 0x9c, 0x40, 0x86, 0x5e, 0x76, 0xc4, 0xa0, - 0x53, 0xa1, 0x9a, 0xb0, 0xc2, 0xb4, 0xeb, 0xd8, 0xdc, 0x56, 0xd9, 0x5b, 0xf3, 0xbe, 0x6a, 0x67, - 0xd0, 0x48, 0xdb, 0x6d, 0xc6, 0xab, 0x0e, 0x93, 0x36, 0x11, 0x4e, 0x31, 0x94, 0x9c, 0x0e, 0x82, - 0xf8, 0x18, 0xf1, 0x31, 0xe2, 0x63, 0xc4, 0xc7, 0x88, 0x8f, 0x11, 0x1f, 0x23, 0x3e, 0x46, 0x7c, - 0x9c, 0xb0, 0xe7, 0xc7, 0xfc, 0x20, 0x1f, 0x3e, 0x40, 0x34, 0x9c, 0x6f, 0x96, 0x11, 0xfb, 0xce, - 0x87, 0x7d, 0xa9, 0x10, 0x81, 0x28, 0x86, 0x7c, 0xc7, 0x43, 0x20, 0xee, 0x45, 0xdc, 0x8b, 0xb8, - 0x17, 0x71, 0x2f, 0xe2, 0x5e, 0xc4, 0xbd, 0x88, 0x7b, 0x11, 0xf7, 0x8e, 0x11, 0xd9, 0x61, 0x1e, - 0x74, 0x80, 0xa8, 0x37, 0xcf, 0x1c, 0x23, 0xe6, 0x9d, 0x0f, 0xf3, 0xfa, 0x91, 0xa7, 0x98, 0x9e, - 0xd8, 0x88, 0x67, 0x43, 0x21, 0x06, 0x46, 0x0c, 0x8c, 0x18, 0x18, 0x31, 0x30, 0x62, 0x60, 0xc4, - 0xc0, 0x88, 0x81, 0x11, 0x03, 0xbf, 0xe4, 0xa3, 0x3f, 0x9d, 0x40, 0x06, 0x8c, 0x8d, 0x30, 0x88, - 0x8b, 0xdf, 0x9a, 0x77, 0xc4, 0xca, 0xf3, 0x61, 0xe5, 0xc0, 0x56, 0xb4, 0x20, 0x46, 0x1e, 0x0f, - 0x81, 0xd8, 0x18, 0xb1, 0x31, 0x62, 0x63, 0xc4, 0xc6, 0x88, 0x8d, 0x11, 0x1b, 0x23, 0x36, 0x46, - 0x6c, 0x9c, 0x70, 0x97, 0x31, 0x30, 0x3b, 0xcb, 0x83, 0x0f, 0x10, 0x09, 0xe7, 0x9b, 0x65, 0xc4, - 0xbd, 0xf3, 0xe1, 0xde, 0x88, 0x6b, 0x62, 0x88, 0x9f, 0x0c, 0x84, 0x18, 0x18, 0x31, 0x30, 0x62, - 0x60, 0xc4, 0xc0, 0x88, 0x81, 0x11, 0x03, 0x23, 0x06, 0x46, 0x0c, 0x9c, 0xa2, 0xb3, 0x3f, 0x91, - 0x10, 0x2e, 0x07, 0x06, 0xff, 0x89, 0x0c, 0x70, 0x66, 0x24, 0xfc, 0x9d, 0x07, 0xb7, 0xbc, 0x1a, - 0x8a, 0x40, 0x05, 0x45, 0xb1, 0xf0, 0x93, 0xa1, 0x10, 0x0d, 0x23, 0x1a, 0x5e, 0x45, 0x34, 0xdc, - 0x6c, 0x14, 0x40, 0xc3, 0xdb, 0x88, 0x86, 0x11, 0x0d, 0x9b, 0x42, 0xc3, 0xad, 0xc6, 0x6e, 0x6b, - 0xb7, 0xb3, 0xdd, 0xd8, 0x45, 0x0c, 0x8c, 0x18, 0x78, 0x99, 0x30, 0xf0, 0x31, 0xff, 0x73, 0x84, - 0x0d, 0x7a, 0x79, 0xa0, 0x01, 0xa2, 0xe0, 0x02, 0x53, 0x8d, 0x38, 0x78, 0x8e, 0x79, 0xf6, 0x88, - 0x54, 0x55, 0xdb, 0xa3, 0x44, 0xe4, 0x07, 0xc0, 0x53, 0x63, 0x20, 0xf2, 0x45, 0xe4, 0xbb, 0x52, - 0xc8, 0xd7, 0x21, 0x8a, 0x56, 0x09, 0x77, 0xaa, 0x8a, 0xf9, 0xb4, 0x48, 0x2b, 0xce, 0x3c, 0x64, - 0x70, 0x8f, 0x28, 0x45, 0x05, 0xcf, 0xad, 0xe6, 0x2a, 0x57, 0x57, 0xce, 0x8f, 0xd6, 0x43, 0x35, - 0xfe, 0xa7, 0x31, 0xf9, 0xe7, 0x72, 0xf4, 0x4f, 0xf7, 0xc9, 0x3f, 0x1b, 0x57, 0x57, 0x5b, 0x57, - 0x57, 0xce, 0x7f, 0x36, 0x7f, 0xdf, 0xf8, 0xff, 0xfd, 0xfc, 0x7a, 0x75, 0xf5, 0x9f, 0xab, 0xab, - 0xea, 0xf5, 0x93, 0x6f, 0x6c, 0x56, 0x40, 0xca, 0xb7, 0x20, 0x52, 0xda, 0x4a, 0x46, 0xbe, 0x30, - 0x16, 0xca, 0x3b, 0x94, 0x77, 0xab, 0x68, 0xe9, 0xa3, 0xdf, 0x0b, 0x2d, 0xfd, 0xe5, 0xb4, 0xf4, - 0xd1, 0xef, 0x85, 0x36, 0x3f, 0xa4, 0xbc, 0x88, 0xb3, 0x48, 0x61, 0xd1, 0xc8, 0x32, 0x18, 0x80, - 0x37, 0x27, 0x1e, 0xf9, 0x80, 0x39, 0xf1, 0x72, 0xf1, 0xb2, 0x91, 0x4f, 0x46, 0x41, 0x8c, 0x8c, - 0x18, 0x19, 0x31, 0x32, 0x62, 0x64, 0xc4, 0xc8, 0x88, 0x91, 0x11, 0x23, 0x23, 0x46, 0x4e, 0x9c, - 0x35, 0x67, 0x91, 0xc2, 0xc2, 0x91, 0x86, 0x11, 0xf1, 0xb3, 0x69, 0x46, 0xfc, 0x3b, 0x27, 0xfe, - 0x2d, 0x5a, 0x3a, 0x72, 0x6a, 0x0c, 0xc4, 0xbe, 0x88, 0x7d, 0x11, 0xfb, 0x22, 0xf6, 0x45, 0xec, - 0x8b, 0xd8, 0x17, 0xb1, 0x2f, 0x62, 0xdf, 0x09, 0x28, 0xc3, 0xe2, 0x91, 0x25, 0x20, 0x5f, 0xac, - 0x1e, 0x99, 0x0d, 0xf7, 0xea, 0x2a, 0x1f, 0xf9, 0xc2, 0x58, 0x88, 0x83, 0x11, 0x07, 0x23, 0x0e, - 0x46, 0x1c, 0x8c, 0x38, 0x18, 0x71, 0x30, 0xe2, 0x60, 0xc4, 0xc1, 0x2f, 0xba, 0xeb, 0xb1, 0x80, - 0x64, 0x19, 0xd8, 0xf8, 0xcd, 0x89, 0x47, 0xbc, 0x3c, 0x27, 0x5e, 0x2e, 0x5a, 0x42, 0x72, 0x6a, - 0x0c, 0xc4, 0xc7, 0x88, 0x8f, 0x11, 0x1f, 0x23, 0x3e, 0x46, 0x7c, 0x8c, 0xf8, 0x18, 0xf1, 0x31, - 0xe2, 0xe3, 0x71, 0x59, 0x97, 0xb3, 0x48, 0x61, 0x11, 0x49, 0xa3, 0x68, 0xf8, 0xd9, 0x34, 0x23, - 0xf6, 0x9d, 0x13, 0xfb, 0xea, 0x29, 0x23, 0x39, 0x33, 0x12, 0xe2, 0x60, 0xc4, 0xc1, 0x88, 0x83, - 0x11, 0x07, 0x23, 0x0e, 0x46, 0x1c, 0x8c, 0x38, 0x18, 0x71, 0xf0, 0x23, 0x40, 0xc3, 0x42, 0x92, - 0x65, 0x41, 0x61, 0xac, 0x24, 0x39, 0xe7, 0x37, 0xe7, 0x3c, 0xb7, 0x45, 0xce, 0x6b, 0x81, 0x73, - 0x5a, 0x00, 0xb4, 0xc4, 0xbb, 0x65, 0xbb, 0xd1, 0x68, 0x5a, 0x55, 0x6b, 0xcf, 0xfa, 0x7f, 0x7b, - 0x9f, 0x3f, 0x59, 0x07, 0x44, 0x11, 0xeb, 0x34, 0x70, 0xa8, 0x67, 0xb9, 0x81, 0x78, 0xdc, 0x40, - 0x57, 0xfc, 0x94, 0x70, 0x32, 0xa0, 0xc9, 0x3e, 0x5b, 0x2c, 0xa6, 0x2d, 0x7a, 0x10, 0xcd, 0xc0, - 0xda, 0x9c, 0x53, 0x69, 0x1a, 0x07, 0xbf, 0xd3, 0x7b, 0xc2, 0xe6, 0x3d, 0x09, 0x7b, 0x9c, 0x07, - 0x8a, 0xc4, 0xd8, 0x20, 0xdb, 0x29, 0x90, 0xf6, 0x90, 0xfa, 0x24, 0x24, 0x6a, 0x18, 0xcf, 0xe9, - 0x87, 0x20, 0xa4, 0xdc, 0x4e, 0x6c, 0xb8, 0x2a, 0x4b, 0x45, 0xd9, 0x87, 0x97, 0x3e, 0x7e, 0x90, - 0x8a, 0x28, 0xfa, 0x61, 0x8c, 0xc2, 0xb3, 0xe8, 0x8e, 0x8a, 0x54, 0x22, 0xb2, 0x15, 0x1f, 0x1f, - 0x89, 0x74, 0x99, 0xbe, 0xed, 0x4f, 0xc6, 0x7a, 0xa7, 0x67, 0xa6, 0xe7, 0x98, 0xbb, 0x8a, 0x43, - 0xa5, 0x2d, 0x58, 0x98, 0x69, 0xe2, 0x1e, 0x4b, 0x18, 0x4d, 0x5d, 0x3c, 0xe7, 0x3a, 0x65, 0xb3, - 0xab, 0x33, 0xdb, 0xd3, 0x79, 0xec, 0xe8, 0xdc, 0xf6, 0x73, 0x5e, 0x19, 0x53, 0xd8, 0x5e, 0x2e, - 0x2c, 0x50, 0x8a, 0xd8, 0xc7, 0x7a, 0x35, 0x58, 0x66, 0x3b, 0x38, 0x5d, 0x2d, 0xa9, 0x04, 0xe3, - 0x83, 0x2c, 0xcb, 0x95, 0x16, 0xcc, 0x42, 0x1d, 0x3c, 0x07, 0x62, 0xdb, 0xf3, 0x18, 0x91, 0xa8, - 0x79, 0xf3, 0x43, 0xde, 0xd1, 0x04, 0x42, 0xd3, 0xb7, 0x5a, 0xb4, 0x0a, 0xe5, 0xf1, 0x59, 0x70, - 0xb2, 0x6b, 0x94, 0xc9, 0x85, 0x73, 0x9e, 0xbd, 0x03, 0xea, 0x92, 0xc8, 0x53, 0x99, 0x4e, 0x4f, - 0x25, 0xde, 0x05, 0xf3, 0x2d, 0xcb, 0x35, 0x2a, 0x35, 0x54, 0x6a, 0xa5, 0x2a, 0xb5, 0x7e, 0x10, - 0x78, 0x94, 0xf0, 0x3c, 0x5a, 0xad, 0x8e, 0x5a, 0x6d, 0x1e, 0xa1, 0xec, 0xf8, 0x8c, 0x5f, 0x28, - 0xa2, 0x22, 0xd4, 0x6d, 0x45, 0x74, 0xdb, 0xd4, 0x34, 0xae, 0xa5, 0x86, 0x63, 0x2e, 0xe3, 0x0e, - 0xbd, 0xcb, 0xae, 0xe1, 0x26, 0x17, 0xa2, 0x6a, 0x41, 0xd5, 0x52, 0xaa, 0x6a, 0x89, 0x18, 0x57, - 0x99, 0xda, 0x6c, 0xe4, 0x68, 0xaf, 0x91, 0xd3, 0x39, 0x98, 0x43, 0xec, 0x17, 0x71, 0x06, 0x16, - 0x75, 0x02, 0x6a, 0x73, 0x43, 0x15, 0x77, 0x3f, 0xe5, 0x70, 0xf6, 0x15, 0x72, 0xf2, 0x69, 0x6b, - 0x8b, 0xb1, 0x4c, 0x73, 0x08, 0x82, 0xe0, 0x04, 0x0b, 0xc8, 0xac, 0xea, 0xab, 0x50, 0x02, 0x11, - 0xd8, 0x2f, 0x10, 0xd8, 0xaf, 0xe6, 0x6d, 0x2d, 0x21, 0xd7, 0xa8, 0x19, 0xc4, 0x70, 0xac, 0x61, - 0x32, 0xc2, 0xae, 0xe9, 0x8b, 0x11, 0x7a, 0x21, 0xf4, 0x2a, 0x15, 0x7a, 0x29, 0xe6, 0x53, 0xc5, - 0xec, 0xef, 0x12, 0xd1, 0x17, 0xa2, 0x2f, 0x44, 0x5f, 0x88, 0xbe, 0x96, 0x86, 0x0e, 0x3b, 0x21, - 0x52, 0xed, 0x67, 0xd1, 0x8a, 0xc8, 0x86, 0xfd, 0x7a, 0x16, 0xd7, 0x12, 0x99, 0xf9, 0x2a, 0xca, - 0x8e, 0xc8, 0xe2, 0x8b, 0x10, 0x89, 0x21, 0x12, 0x2b, 0x9d, 0x04, 0xab, 0x77, 0x72, 0xc0, 0xb0, - 0x0e, 0xc2, 0x30, 0x84, 0x61, 0xcf, 0xa7, 0xae, 0xd3, 0x6e, 0x37, 0x11, 0x81, 0x2d, 0x83, 0x06, - 0x1a, 0x07, 0xd3, 0x65, 0x54, 0x41, 0xc9, 0x55, 0xa8, 0x83, 0x50, 0x07, 0x95, 0xaa, 0x83, 0x30, - 0x70, 0xad, 0x80, 0x4d, 0xb3, 0xdd, 0x68, 0x34, 0xbb, 0x6f, 0x05, 0x3c, 0x5b, 0x18, 0x3a, 0xfe, - 0xa6, 0x59, 0x93, 0x79, 0x22, 0xd7, 0x52, 0xaf, 0x04, 0x21, 0x15, 0x55, 0x39, 0x8a, 0x73, 0xc8, - 0xac, 0x5e, 0xa6, 0x2f, 0x46, 0x2d, 0x83, 0x5a, 0x26, 0x87, 0x8c, 0x3e, 0x25, 0xdc, 0x21, 0x2a, - 0x10, 0xf7, 0xb1, 0xf8, 0x37, 0xae, 0x99, 0x28, 0x8f, 0x7c, 0x2a, 0x48, 0x86, 0x78, 0xfe, 0x27, - 0xea, 0xa9, 0x95, 0xe1, 0x9a, 0x43, 0x1e, 0xf9, 0xf1, 0x43, 0x62, 0x3e, 0xd4, 0x5c, 0x25, 0x87, - 0x43, 0x2a, 0x30, 0x68, 0xad, 0x28, 0x4d, 0x37, 0x35, 0x8b, 0x6b, 0xa9, 0xcc, 0x54, 0x16, 0xc1, - 0xf0, 0xe8, 0xbc, 0x8a, 0xaf, 0x42, 0xf5, 0x85, 0xea, 0x6b, 0xe9, 0xd5, 0x17, 0x73, 0x28, 0x57, - 0x4c, 0xdd, 0x0b, 0xea, 0xe6, 0x51, 0x5f, 0x19, 0x98, 0x9c, 0xca, 0xf1, 0xf8, 0x56, 0x1f, 0x89, - 0xa4, 0xf9, 0x8b, 0xd4, 0xa4, 0xc9, 0x84, 0xd5, 0x0c, 0x87, 0xec, 0x29, 0x0b, 0x25, 0x73, 0x65, - 0xd9, 0xe7, 0x54, 0x04, 0xe9, 0x73, 0x13, 0x4e, 0xaa, 0x85, 0x1e, 0x5e, 0xc7, 0x4b, 0x14, 0x7b, - 0x99, 0x99, 0x97, 0x72, 0x1d, 0x87, 0x55, 0x16, 0x51, 0x75, 0x43, 0xd3, 0xf3, 0x87, 0x22, 0x08, - 0xf7, 0x94, 0x0f, 0xf9, 0x15, 0x88, 0xb0, 0x39, 0x55, 0x90, 0xdf, 0x80, 0xc9, 0x60, 0x67, 0xa7, - 0xd6, 0x68, 0xef, 0x9f, 0x1f, 0xf5, 0x8e, 0x39, 0xe8, 0x57, 0xe9, 0x0f, 0xc2, 0x30, 0xf0, 0x98, - 0x7d, 0x4f, 0xec, 0x24, 0xc9, 0x99, 0xf1, 0x01, 0xe4, 0xd7, 0xf1, 0x43, 0x4f, 0x42, 0x7e, 0xfe, - 0x40, 0xf1, 0x33, 0x27, 0x02, 0x7d, 0xba, 0xbd, 0xe8, 0x30, 0x0c, 0x78, 0x6f, 0x78, 0x2f, 0x99, - 0x4d, 0xbc, 0x3f, 0x39, 0x68, 0x71, 0x4b, 0xd5, 0x90, 0x0a, 0x4e, 0x55, 0xf3, 0xb4, 0xcf, 0x60, - 0x8b, 0x2c, 0x4a, 0xe9, 0x4e, 0xad, 0x51, 0x6f, 0xac, 0xc2, 0x4b, 0xd4, 0x41, 0xbf, 0x04, 0x77, - 0x19, 0x67, 0x7d, 0xc2, 0x1d, 0xd0, 0xc7, 0xdc, 0x91, 0x1e, 0xe8, 0xbd, 0xe4, 0x05, 0x36, 0xf1, - 0x2e, 0x89, 0xf7, 0x1d, 0xb4, 0x78, 0x0a, 0x3d, 0x21, 0x61, 0x63, 0x41, 0x12, 0x82, 0xc6, 0x1b, - 0xf7, 0x82, 0x01, 0x07, 0xb3, 0xc4, 0x8b, 0x3e, 0x85, 0x01, 0x3f, 0xe3, 0xb0, 0x61, 0x07, 0xf1, - 0xda, 0x90, 0x9f, 0xff, 0x26, 0x60, 0x36, 0x3d, 0xfa, 0xfb, 0x0c, 0xf4, 0x1a, 0x28, 0xff, 0x22, - 0xea, 0xa7, 0xc4, 0x2c, 0xe4, 0x57, 0x71, 0xd8, 0x80, 0x29, 0xe2, 0xf5, 0x82, 0x5b, 0x2a, 0x3c, - 0xc6, 0x41, 0xbf, 0xcb, 0x90, 0x85, 0x21, 0x68, 0x10, 0xee, 0x12, 0x09, 0x5a, 0xc2, 0x3a, 0x81, - 0x2d, 0xf7, 0x49, 0xdf, 0xa3, 0xa7, 0xc4, 0xf6, 0xc8, 0x3d, 0x15, 0xd0, 0x09, 0xa8, 0xbf, 0x98, - 0xa0, 0x1e, 0x95, 0xb2, 0xd7, 0xe8, 0x81, 0x86, 0x80, 0x24, 0xec, 0x83, 0x06, 0x1f, 0x2c, 0xb8, - 0x6b, 0x80, 0xd6, 0x7a, 0xdc, 0x25, 0x12, 0xbe, 0xd6, 0xfe, 0x74, 0x70, 0xb8, 0xf7, 0x79, 0x0f, - 0x34, 0xed, 0x14, 0x2a, 0x66, 0x13, 0x6f, 0x7f, 0x48, 0x38, 0xa7, 0x5e, 0xe2, 0x4f, 0x85, 0xfc, - 0x3a, 0x36, 0x93, 0x76, 0x70, 0x7c, 0x71, 0x72, 0xe3, 0x11, 0x0e, 0xfa, 0x3d, 0x6c, 0x75, 0xe8, - 0x47, 0x1e, 0x74, 0xdd, 0x7d, 0xa8, 0x86, 0xb0, 0x75, 0x9e, 0x12, 0xb5, 0xda, 0x0e, 0x74, 0xa5, - 0x7d, 0x10, 0xd8, 0x72, 0xa2, 0xb8, 0xff, 0x0c, 0xa5, 0x12, 0x94, 0x80, 0x76, 0x23, 0xc5, 0xb0, - 0x7c, 0x00, 0x5d, 0x52, 0xdd, 0xf8, 0xb7, 0x44, 0xd0, 0x2f, 0x4c, 0xa8, 0x88, 0x78, 0x9f, 0x99, - 0x0d, 0xdc, 0xce, 0xa0, 0xc2, 0x23, 0xbc, 0xb1, 0x02, 0xee, 0x0b, 0xd0, 0x2e, 0x3d, 0x69, 0x43, - 0x67, 0x96, 0x21, 0x3f, 0xff, 0x80, 0x0d, 0x48, 0x9f, 0x8d, 0x94, 0x1e, 0x70, 0x6a, 0x30, 0x35, - 0x5c, 0x27, 0xfa, 0x62, 0x0c, 0x10, 0x41, 0x63, 0xaa, 0xbe, 0xf7, 0x85, 0xda, 0x8a, 0x5c, 0x28, - 0x02, 0x1a, 0x93, 0xc8, 0x80, 0x53, 0xd5, 0x23, 0x6a, 0x08, 0x1c, 0x97, 0x28, 0x1a, 0xf0, 0x9d, - 0x1a, 0x74, 0xf7, 0xea, 0x30, 0x90, 0xaa, 0x47, 0x40, 0x7b, 0xf4, 0x18, 0x68, 0x20, 0x15, 0x49, - 0xd0, 0x54, 0xce, 0xed, 0x2d, 0xe1, 0xbd, 0x1e, 0x68, 0xe4, 0x34, 0x74, 0x86, 0xf5, 0x9d, 0x46, - 0x03, 0xba, 0x99, 0x94, 0xf4, 0x32, 0x0f, 0x3d, 0x7a, 0x17, 0x80, 0x56, 0x0f, 0xce, 0x4d, 0xff, - 0xdc, 0xb6, 0x57, 0xc1, 0xce, 0x13, 0x94, 0xd8, 0xc3, 0x83, 0x8b, 0x13, 0xd0, 0x98, 0xd0, 0x0d, - 0xc1, 0x6f, 0x26, 0x79, 0x4a, 0xec, 0x13, 0xf8, 0xde, 0x0b, 0xe6, 0x13, 0x71, 0x7f, 0x7c, 0x71, - 0xf0, 0x19, 0x3c, 0xef, 0x7c, 0x76, 0x43, 0xc5, 0x31, 0xe8, 0x7d, 0xa5, 0xe8, 0x09, 0xe3, 0xb0, - 0x03, 0x70, 0xec, 0x00, 0xb8, 0x8d, 0x37, 0x0c, 0x7c, 0x1a, 0x72, 0x02, 0xfa, 0x34, 0x40, 0x8f, - 0x45, 0x73, 0x59, 0x5f, 0xd0, 0x15, 0xb0, 0xad, 0x07, 0xdb, 0xb5, 0x26, 0x51, 0x9d, 0xd6, 0x77, - 0xd8, 0x38, 0xd6, 0x03, 0xcd, 0x9f, 0x79, 0x4d, 0x16, 0xde, 0x41, 0xf7, 0x7c, 0x0d, 0x14, 0x68, - 0xc5, 0x36, 0xbc, 0x0f, 0xa9, 0xb0, 0xe1, 0x1f, 0xe8, 0x51, 0xaa, 0x4e, 0xcf, 0x8b, 0x40, 0x7b, - 0xe9, 0x25, 0x70, 0x46, 0x59, 0x2a, 0x22, 0x4e, 0x60, 0x9f, 0x67, 0xe6, 0x7e, 0x71, 0x59, 0x92, - 0xf3, 0x09, 0x19, 0xec, 0xc1, 0xf6, 0x0b, 0x25, 0x46, 0xc3, 0xc1, 0xf1, 0x01, 0x6c, 0x92, 0x32, - 0xb6, 0x7a, 0x80, 0x27, 0x40, 0x8e, 0xb8, 0x99, 0x55, 0x30, 0xa7, 0x5d, 0x71, 0x14, 0x88, 0x5b, - 0x22, 0x1c, 0xd8, 0x2f, 0x41, 0x7c, 0x7a, 0x4e, 0x3d, 0x72, 0x0f, 0x1a, 0x31, 0x01, 0xf7, 0x5a, - 0x4f, 0x72, 0xbb, 0xda, 0x2d, 0xd0, 0x47, 0x5b, 0x82, 0xce, 0x4d, 0xfb, 0xc7, 0x83, 0x6d, 0xfb, - 0x90, 0x7a, 0xe3, 0x34, 0x0c, 0x2f, 0x6e, 0x99, 0xb2, 0x87, 0xc0, 0x35, 0xc4, 0x9e, 0x64, 0x67, - 0x91, 0x02, 0xfe, 0x12, 0x97, 0x0e, 0x68, 0x45, 0x4d, 0x41, 0x1f, 0x66, 0x2e, 0x61, 0xbb, 0x74, - 0xa5, 0xef, 0xc8, 0x83, 0x3b, 0x06, 0xdc, 0x72, 0xb3, 0xbf, 0x5f, 0x06, 0x17, 0xf1, 0x3f, 0xf0, - 0xe5, 0xd1, 0x31, 0x5f, 0x81, 0xc8, 0xbe, 0x93, 0x60, 0xc0, 0x6c, 0xe2, 0x41, 0x77, 0x3c, 0x08, - 0x3a, 0x88, 0x3c, 0x22, 0xa0, 0x7b, 0xdc, 0x27, 0x95, 0x54, 0x2e, 0x83, 0xef, 0x94, 0x9f, 0x03, - 0x2f, 0x3e, 0x22, 0xa1, 0xfb, 0x82, 0xee, 0x1a, 0xf5, 0x26, 0xf0, 0x84, 0x2e, 0x17, 0x78, 0x12, - 0x33, 0xec, 0xd3, 0xec, 0x83, 0xde, 0xfe, 0x3e, 0xb1, 0x2f, 0xa8, 0xbd, 0x1f, 0x70, 0x25, 0x02, - 0xcf, 0xa3, 0xce, 0xf1, 0x11, 0x68, 0x9d, 0xed, 0xf0, 0xbf, 0x1b, 0xab, 0x90, 0x13, 0x7f, 0xb1, - 0x52, 0x21, 0xd4, 0xab, 0xc1, 0x94, 0x25, 0x49, 0xfe, 0x76, 0xc0, 0x39, 0xb5, 0x61, 0x17, 0xbf, - 0x70, 0x3d, 0xc2, 0x69, 0x8c, 0x40, 0x40, 0x03, 0x0f, 0xb9, 0x7d, 0xc1, 0x06, 0xd0, 0x21, 0xad, - 0x23, 0xeb, 0x47, 0x07, 0x27, 0xb0, 0xd1, 0x2c, 0xec, 0x6c, 0x34, 0x3f, 0xb0, 0xc9, 0x17, 0x2a, - 0x24, 0x0b, 0x78, 0x1d, 0x7e, 0x1c, 0x4a, 0xc3, 0xef, 0xaf, 0x44, 0xe6, 0xec, 0xd1, 0xdf, 0xa0, - 0x4f, 0x35, 0x6c, 0x5f, 0x5d, 0x18, 0xc8, 0x15, 0x28, 0xee, 0xb4, 0x22, 0xd5, 0x18, 0x6f, 0x80, - 0x07, 0x72, 0x24, 0xc5, 0x94, 0x3d, 0x4a, 0x6e, 0x40, 0x87, 0x41, 0x48, 0x11, 0xae, 0x40, 0xad, - 0x8b, 0x4b, 0x41, 0xb8, 0x0c, 0x03, 0x01, 0xbd, 0x76, 0xdb, 0xe1, 0x09, 0xe8, 0x1a, 0x3c, 0x83, - 0xdd, 0xdd, 0x9d, 0x26, 0x6c, 0xd4, 0xda, 0x5c, 0x0d, 0x93, 0xee, 0x82, 0x8a, 0x1b, 0x06, 0xbb, - 0x6a, 0x5b, 0x42, 0x18, 0x1c, 0x72, 0x1b, 0x76, 0x4d, 0xc9, 0x30, 0xe0, 0x9d, 0x95, 0x60, 0xf5, - 0x9b, 0xfb, 0xd2, 0x27, 0xb6, 0x03, 0x3f, 0x54, 0xeb, 0x20, 0xb8, 0xe5, 0xf0, 0xd9, 0x1b, 0x3f, - 0xf4, 0xe4, 0x65, 0x04, 0x3d, 0x24, 0x39, 0x4d, 0x7d, 0x82, 0xde, 0x05, 0x61, 0xe4, 0x8e, 0x04, - 0x5e, 0x76, 0x75, 0x54, 0xbf, 0xe6, 0x33, 0xb3, 0x2f, 0x81, 0x1f, 0x8e, 0x9b, 0x66, 0x07, 0xbe, - 0xe6, 0x3b, 0x85, 0x1d, 0x22, 0x5e, 0x1d, 0x48, 0x0e, 0x1b, 0x4b, 0x1d, 0x78, 0x36, 0x3b, 0xe4, - 0x4e, 0x0f, 0xb4, 0x51, 0x71, 0x33, 0xaa, 0x46, 0x75, 0x39, 0x80, 0xef, 0xcb, 0xfb, 0x93, 0xdb, - 0x2b, 0xe2, 0xcd, 0xf3, 0x1a, 0xd0, 0x53, 0xba, 0xfc, 0x1b, 0x6f, 0x15, 0x3a, 0x81, 0xc0, 0xc7, - 0xb4, 0x4c, 0x3a, 0xb0, 0x23, 0xc5, 0x57, 0x21, 0xc0, 0x57, 0xd6, 0x3e, 0x46, 0xdc, 0xf1, 0x28, - 0xf0, 0x7a, 0xef, 0xc7, 0x3e, 0xec, 0xcc, 0xf1, 0xe6, 0x36, 0xf4, 0x7a, 0x35, 0xfb, 0x1c, 0x76, - 0xc7, 0xab, 0x51, 0x46, 0xd7, 0x3e, 0xf0, 0xa4, 0x6b, 0xa2, 0xfc, 0x7e, 0x00, 0xbb, 0xa3, 0xcf, - 0xa4, 0x96, 0xf5, 0xd9, 0x05, 0xf8, 0xbe, 0x44, 0x21, 0xf0, 0x84, 0x65, 0x9b, 0xf4, 0x3d, 0xfa, - 0x48, 0x3a, 0x9d, 0xbb, 0x3d, 0xe0, 0x7e, 0x0a, 0x19, 0xb8, 0xea, 0x96, 0x08, 0x7a, 0x12, 0x04, - 0x61, 0x1f, 0x78, 0x2c, 0x7c, 0x4a, 0x40, 0x1d, 0xad, 0x44, 0xde, 0xe0, 0x98, 0x39, 0x38, 0xfa, - 0x74, 0x00, 0xdd, 0x8d, 0x04, 0xbb, 0xf4, 0x1c, 0x11, 0x04, 0x76, 0xe8, 0x78, 0xdb, 0xf7, 0x40, - 0xbb, 0x5d, 0x04, 0x71, 0x58, 0x70, 0xba, 0xb7, 0xbf, 0x1a, 0x9d, 0x66, 0xf6, 0x7d, 0x25, 0x57, - 0xc3, 0x6d, 0x71, 0xb7, 0xd3, 0x39, 0x21, 0xa1, 0x04, 0x9e, 0x97, 0x00, 0x1a, 0x1a, 0x86, 0x0e, - 0x4f, 0x22, 0xd1, 0x62, 0xf5, 0x5d, 0x87, 0x0d, 0xac, 0xc2, 0x5b, 0x12, 0x1e, 0x04, 0xaa, 0x5e, - 0xff, 0x28, 0x41, 0x6f, 0xa9, 0xc8, 0x53, 0xb0, 0x15, 0x06, 0x81, 0xed, 0xbe, 0x1b, 0xbb, 0xb8, - 0x1b, 0xc0, 0x13, 0xe6, 0x87, 0xcd, 0x46, 0xf3, 0x13, 0x51, 0xf4, 0x3b, 0xa5, 0x21, 0xec, 0x52, - 0x24, 0x22, 0x84, 0xdd, 0x62, 0x06, 0xbc, 0x63, 0x7e, 0x20, 0x9a, 0xb5, 0xe6, 0xf9, 0xc1, 0x25, - 0xf8, 0x0c, 0xce, 0xd8, 0xb6, 0x1b, 0x52, 0xe2, 0xac, 0x40, 0x41, 0xc6, 0x3e, 0x91, 0xcc, 0x86, - 0x5e, 0xec, 0x16, 0x78, 0x19, 0x83, 0xa1, 0x94, 0x0c, 0xb8, 0xa2, 0x06, 0x5e, 0x85, 0x61, 0x92, - 0x64, 0x7e, 0xc4, 0xfa, 0xf0, 0x7b, 0x6f, 0x4e, 0xb7, 0xf1, 0x5a, 0x85, 0x7e, 0xa2, 0x92, 0x85, - 0xb0, 0x23, 0x0d, 0x26, 0xbb, 0xeb, 0x40, 0x89, 0x15, 0xf0, 0xc3, 0x78, 0xe4, 0x16, 0x74, 0x70, - 0x3f, 0xf4, 0x56, 0x83, 0xac, 0xef, 0x37, 0xb7, 0x6b, 0x21, 0x11, 0x31, 0xfa, 0x80, 0x5d, 0xdb, - 0x5d, 0xf8, 0xd0, 0x3b, 0xe2, 0x00, 0x4f, 0x37, 0x8a, 0x8d, 0xbb, 0x9e, 0x08, 0xee, 0xee, 0x57, - 0x40, 0xbc, 0xb6, 0x92, 0x0a, 0x31, 0x1f, 0x61, 0xfb, 0xf5, 0xc6, 0xef, 0xd2, 0x39, 0x05, 0x1e, - 0xc9, 0x45, 0x1d, 0x46, 0x4e, 0x09, 0xf3, 0xe0, 0x77, 0xa0, 0x90, 0xec, 0xee, 0x32, 0x38, 0x0a, - 0x22, 0xb1, 0x0a, 0xa5, 0x33, 0x3b, 0x7f, 0x9d, 0xee, 0x7d, 0x86, 0x1d, 0x02, 0xdc, 0xbb, 0x85, - 0x5e, 0x24, 0x9a, 0x85, 0x2b, 0x50, 0x12, 0xd7, 0x0e, 0xfc, 0x30, 0x90, 0x0c, 0x7e, 0x7f, 0x16, - 0xc9, 0xc2, 0x0b, 0x36, 0x80, 0xdf, 0x19, 0x0e, 0x76, 0xf9, 0x7d, 0xe0, 0xb1, 0x5d, 0x93, 0x1a, - 0x31, 0xa0, 0x13, 0x3d, 0x85, 0x6b, 0xd7, 0x5b, 0xb0, 0x53, 0x6d, 0xc3, 0x80, 0xd7, 0xdb, 0xa0, - 0x0b, 0xf5, 0x10, 0x5b, 0x51, 0x8f, 0xc9, 0x53, 0xaa, 0xc8, 0xc9, 0xd9, 0x19, 0xec, 0x53, 0xed, - 0x01, 0xa7, 0x65, 0x59, 0x18, 0xb2, 0xa4, 0x8c, 0x95, 0x4b, 0x6c, 0xe8, 0x61, 0xd8, 0xe3, 0x06, - 0xf2, 0xa0, 0x8d, 0x0a, 0x77, 0x15, 0x4a, 0x58, 0x3d, 0xaf, 0xf6, 0x06, 0x3f, 0x74, 0x53, 0xc8, - 0x46, 0xb3, 0x01, 0xbb, 0xa8, 0x95, 0x43, 0x61, 0xa7, 0xa6, 0xd6, 0x41, 0xc7, 0xdc, 0x50, 0x69, - 0xc3, 0xee, 0x4c, 0x11, 0xcb, 0xd7, 0x15, 0x48, 0xeb, 0xf4, 0x7c, 0xd8, 0x55, 0x31, 0x60, 0xc3, - 0x0d, 0x26, 0x1d, 0x0e, 0x9a, 0xbb, 0x54, 0xc0, 0xad, 0xb8, 0x51, 0x9c, 0xfb, 0xc7, 0x0b, 0xe8, - 0xfe, 0xdf, 0x5e, 0xc0, 0xb8, 0xba, 0x0c, 0x92, 0x7f, 0x2e, 0xa8, 0x60, 0xb0, 0x51, 0xdf, 0x10, - 0x7a, 0xeb, 0xd6, 0xbb, 0x46, 0x7b, 0x18, 0x71, 0xf5, 0x49, 0x04, 0xb0, 0x4b, 0x7f, 0x8e, 0x39, - 0xe4, 0x26, 0x71, 0x4e, 0x08, 0x68, 0xbe, 0x2c, 0x84, 0x2d, 0xa6, 0x02, 0xc5, 0xcf, 0x54, 0x04, - 0x3d, 0x15, 0x07, 0x34, 0x60, 0x0d, 0xc3, 0x10, 0xb8, 0x44, 0x0a, 0x61, 0xe7, 0x95, 0x3b, 0x36, - 0x6c, 0xf7, 0x28, 0xf4, 0x7e, 0xb3, 0xae, 0x70, 0xeb, 0x9d, 0x53, 0x57, 0xc0, 0xaf, 0x50, 0x10, - 0x8a, 0x40, 0xd1, 0x80, 0xd7, 0x6b, 0xa7, 0x7d, 0xa6, 0xa0, 0xf7, 0xc2, 0x3a, 0xb6, 0x61, 0x9b, - 0x40, 0x36, 0x17, 0xc0, 0xf3, 0x03, 0x61, 0x1f, 0x6b, 0x3f, 0x04, 0x8d, 0x8c, 0xfe, 0x81, 0x9d, - 0xc6, 0x48, 0xe4, 0x3d, 0xb7, 0x57, 0xa3, 0x52, 0xec, 0x69, 0xef, 0x18, 0x38, 0xbe, 0x3b, 0x8d, - 0x3c, 0xc5, 0x3c, 0xc6, 0xbf, 0xc3, 0x57, 0x71, 0xe3, 0x6a, 0x6d, 0xc7, 0xe1, 0x9e, 0xe3, 0x08, - 0x0a, 0x3b, 0xa9, 0xd1, 0x0e, 0x5c, 0x97, 0x82, 0x5e, 0x0d, 0x9b, 0x4a, 0xe8, 0x04, 0xd3, 0xc7, - 0xbf, 0xf6, 0xc2, 0xc6, 0x29, 0xec, 0x54, 0x7e, 0x29, 0xfa, 0xc0, 0xab, 0x83, 0x81, 0xa6, 0x8a, - 0x93, 0xd2, 0xfa, 0x7f, 0x00, 0x27, 0x8c, 0x1d, 0x4f, 0x82, 0x4e, 0x85, 0xf0, 0x9a, 0x2c, 0x84, - 0x5e, 0x33, 0x92, 0x49, 0x07, 0x76, 0x7d, 0x64, 0x87, 0x0d, 0x98, 0x22, 0xde, 0x5f, 0x82, 0x84, - 0x21, 0x15, 0x2b, 0x94, 0x59, 0x3a, 0x5d, 0x12, 0xa2, 0x01, 0xbe, 0xc2, 0xbb, 0xbc, 0x74, 0x60, - 0x17, 0x32, 0x4c, 0x12, 0x97, 0xbf, 0x5c, 0x42, 0xc7, 0x1e, 0x2b, 0x10, 0xc7, 0x44, 0x94, 0x3f, - 0x6e, 0x31, 0xbd, 0x12, 0x81, 0x4c, 0xab, 0x51, 0x43, 0x88, 0x28, 0xff, 0x9c, 0x38, 0x2c, 0x00, - 0x6d, 0x7f, 0xdb, 0x2c, 0x04, 0xdf, 0xb5, 0xdc, 0xb5, 0x77, 0xb6, 0xb7, 0xef, 0x60, 0x77, 0xdb, - 0xb4, 0x57, 0xa0, 0x2e, 0x84, 0x60, 0xce, 0x80, 0xc2, 0xaf, 0xe4, 0xf4, 0x97, 0x9a, 0xa8, 0x0c, - 0xf0, 0xc7, 0x9b, 0x28, 0xff, 0x28, 0x82, 0xdd, 0x9e, 0xaf, 0xcf, 0x94, 0x84, 0x1e, 0x03, 0x51, - 0x6f, 0xee, 0xb6, 0x56, 0xa9, 0x44, 0xc4, 0x6a, 0xe8, 0xef, 0xb4, 0xe6, 0x6a, 0x82, 0x49, 0x60, - 0x57, 0x1c, 0x87, 0xdd, 0x69, 0x7a, 0x08, 0xbd, 0x05, 0x27, 0x70, 0x46, 0x64, 0xaa, 0x82, 0x61, - 0x4f, 0x04, 0x2e, 0x83, 0x7d, 0x1a, 0xc6, 0xbd, 0x38, 0x57, 0x80, 0x0f, 0x49, 0xaa, 0x9f, 0x1d, - 0xc3, 0xae, 0x7e, 0xf6, 0x4f, 0x63, 0xb7, 0x59, 0x87, 0xed, 0xe1, 0xa6, 0x83, 0xd5, 0xe8, 0xeb, - 0x7a, 0xc3, 0x6c, 0x76, 0x36, 0x3a, 0x1c, 0x87, 0x05, 0x4b, 0xda, 0xe4, 0xba, 0xf2, 0xfa, 0x5d, - 0x09, 0x93, 0x96, 0x6f, 0xb2, 0x1e, 0x0d, 0x62, 0xc7, 0xc9, 0x01, 0x97, 0xcb, 0x7f, 0xce, 0x18, - 0x92, 0xe5, 0x6a, 0x56, 0x58, 0xfe, 0xa3, 0x12, 0x61, 0x73, 0xaa, 0x20, 0x3c, 0xe9, 0xa4, 0xea, - 0xd6, 0xfe, 0xf9, 0x51, 0xef, 0x98, 0x83, 0x78, 0xe4, 0xfe, 0x20, 0x0c, 0x03, 0x8f, 0xd9, 0xf7, - 0xc4, 0xb6, 0x83, 0x88, 0x2b, 0xc6, 0x07, 0x10, 0x1e, 0xdb, 0x0f, 0xf3, 0x34, 0x98, 0x29, 0xff, - 0x39, 0x03, 0xc5, 0xcf, 0x9c, 0x08, 0xc4, 0x29, 0x1b, 0xb5, 0xfe, 0x2c, 0xd4, 0x94, 0xbf, 0xfc, - 0xa7, 0x9e, 0x34, 0x40, 0x6b, 0xe6, 0x8b, 0xa5, 0x5c, 0x80, 0x88, 0x18, 0x97, 0xc5, 0x69, 0x40, - 0x7a, 0xd8, 0x3a, 0x88, 0x87, 0xe5, 0x2e, 0xe3, 0xac, 0x4f, 0xf2, 0x34, 0x3c, 0x5a, 0xc0, 0x71, - 0xcb, 0x97, 0x63, 0x54, 0xfe, 0x83, 0x7a, 0x81, 0x4d, 0xbc, 0x4b, 0xe2, 0x7d, 0x07, 0x21, 0x0e, - 0x42, 0x4f, 0x48, 0x18, 0x98, 0x26, 0x4f, 0x3b, 0xf8, 0x05, 0xe8, 0xd9, 0x7b, 0xc1, 0x80, 0x80, - 0x2f, 0xe2, 0x45, 0x9f, 0xf2, 0xf6, 0xae, 0x5e, 0xc0, 0xd3, 0x12, 0xaf, 0x0d, 0xe1, 0x39, 0x47, - 0x0d, 0xd8, 0xfe, 0x3e, 0x03, 0x31, 0xa7, 0xca, 0xbf, 0x88, 0xfa, 0x05, 0xca, 0xa7, 0x94, 0xff, - 0xc8, 0xe3, 0x50, 0x9c, 0x5e, 0x70, 0x4b, 0x85, 0xc7, 0x38, 0x88, 0x67, 0x4e, 0x8a, 0xd4, 0x40, - 0x78, 0x50, 0x97, 0x48, 0x10, 0x92, 0xeb, 0xb1, 0x41, 0x52, 0xee, 0xd2, 0xd9, 0x8b, 0x21, 0x10, - 0x26, 0xfe, 0x9c, 0x5e, 0xa3, 0x07, 0x02, 0xca, 0x90, 0xb0, 0x0f, 0x42, 0xe9, 0xb2, 0x20, 0x57, - 0x34, 0x42, 0xf9, 0x4f, 0xca, 0x5d, 0x22, 0xe1, 0x68, 0xb1, 0x4f, 0x07, 0x87, 0x7b, 0x9f, 0xf7, - 0x40, 0xd0, 0x06, 0x4f, 0x5c, 0x10, 0x39, 0xf3, 0xf8, 0xcb, 0x7f, 0x6c, 0x9b, 0x49, 0x3b, 0x38, - 0xbe, 0x38, 0xc9, 0x17, 0xe1, 0xbb, 0x80, 0xe7, 0xb5, 0xd5, 0xa1, 0x1f, 0x79, 0x50, 0x74, 0x59, - 0x4e, 0xd2, 0xbd, 0xfc, 0x87, 0x55, 0xa2, 0x56, 0xdb, 0x81, 0xa2, 0xc4, 0xa6, 0x03, 0x13, 0x26, - 0x15, 0xd2, 0x40, 0x68, 0x33, 0xc6, 0xe9, 0x00, 0x8a, 0x64, 0xb8, 0xf1, 0x6f, 0x89, 0xa0, 0xe3, - 0xb0, 0xa8, 0xcf, 0xcc, 0x06, 0x82, 0x73, 0xa9, 0xf0, 0x08, 0x6f, 0x00, 0xa2, 0x6f, 0x41, 0xb8, - 0x1c, 0xa4, 0x0d, 0x85, 0xa1, 0x83, 0xf0, 0x9c, 0x03, 0x36, 0x20, 0x7d, 0x36, 0x52, 0x0e, 0x40, - 0xa8, 0x9a, 0x99, 0x8a, 0x94, 0xb9, 0x63, 0x2d, 0x16, 0x80, 0x19, 0xfa, 0xde, 0x17, 0x6a, 0x2b, - 0x72, 0xa1, 0x08, 0x08, 0x5d, 0x9c, 0x24, 0x61, 0xf4, 0x88, 0x1a, 0x02, 0xd1, 0xc7, 0x8a, 0x06, - 0x7c, 0xa7, 0x06, 0xc5, 0x9d, 0x33, 0x0c, 0xa4, 0xca, 0xd5, 0x50, 0x66, 0x01, 0xfe, 0x11, 0x10, - 0x40, 0x21, 0x92, 0x20, 0x4c, 0xf4, 0x51, 0x01, 0x7c, 0x10, 0xc8, 0x60, 0xe8, 0x0c, 0xeb, 0x3b, - 0x8d, 0x06, 0x14, 0x38, 0x9e, 0x54, 0x41, 0x08, 0x3d, 0x7a, 0x17, 0x80, 0x10, 0xaf, 0x49, 0xa6, - 0x9e, 0x0d, 0xc9, 0x6e, 0x10, 0x94, 0xd8, 0xc3, 0x83, 0x8b, 0x13, 0x10, 0xd8, 0xc6, 0x0d, 0xc1, - 0x6c, 0x02, 0x79, 0x4a, 0xec, 0x13, 0x38, 0xec, 0x2d, 0xf3, 0x89, 0xb8, 0xcf, 0xd7, 0x85, 0x75, - 0x41, 0xfc, 0x5d, 0xde, 0xc6, 0x4e, 0x0b, 0xe0, 0x3f, 0x72, 0xb6, 0xa8, 0x59, 0x80, 0xc3, 0xdc, - 0x0e, 0x80, 0xd8, 0x0c, 0xc3, 0xc0, 0xa7, 0x21, 0x27, 0x20, 0x76, 0x2b, 0x94, 0xd8, 0x0e, 0x97, - 0xf5, 0x05, 0x05, 0x64, 0x7b, 0x0d, 0xb6, 0x6b, 0x4d, 0xa2, 0x3a, 0xad, 0xef, 0x30, 0x70, 0x97, - 0x07, 0x82, 0xe7, 0xf0, 0x9a, 0x2c, 0xbc, 0x83, 0xc2, 0xd8, 0x0f, 0x14, 0x08, 0x05, 0x30, 0xbc, - 0x0f, 0xa9, 0xb0, 0xe1, 0x1c, 0xac, 0x51, 0x88, 0x75, 0xcf, 0x8b, 0x40, 0x78, 0xf3, 0x24, 0x10, - 0x66, 0x4e, 0x2a, 0x22, 0x4e, 0x60, 0x9c, 0x2b, 0xe6, 0x7e, 0x71, 0x59, 0xbe, 0x2e, 0x87, 0x0b, - 0x00, 0x2d, 0x30, 0x78, 0xee, 0x04, 0xb4, 0x1e, 0x1c, 0x1f, 0xc0, 0x20, 0x87, 0x62, 0x74, 0x0d, - 0x24, 0x21, 0x64, 0x64, 0x73, 0x43, 0x32, 0xb7, 0x5c, 0x91, 0xbb, 0xff, 0xe6, 0x22, 0x1e, 0x76, - 0x52, 0x53, 0x13, 0x04, 0x22, 0x00, 0xe2, 0xf5, 0x9a, 0xc4, 0xd2, 0xb7, 0x5b, 0x20, 0x8e, 0x98, - 0x04, 0x11, 0xf3, 0xff, 0x8f, 0x07, 0x03, 0x63, 0x93, 0x7a, 0xe3, 0x34, 0x0c, 0x2f, 0x6e, 0x99, - 0xb2, 0x87, 0x40, 0x24, 0xec, 0x9e, 0x64, 0x67, 0x91, 0x02, 0xf2, 0xb0, 0x97, 0x0e, 0x08, 0xc5, - 0x45, 0x41, 0x1c, 0x2a, 0x2e, 0x61, 0xb8, 0x8a, 0xa4, 0xef, 0xc8, 0x83, 0x3b, 0x06, 0xc4, 0x12, - 0xb0, 0xbf, 0x5f, 0x06, 0x17, 0xf1, 0x3f, 0x70, 0xce, 0xff, 0x31, 0x07, 0x14, 0xf9, 0x32, 0xae, - 0x6f, 0x07, 0x85, 0x78, 0x15, 0x74, 0x10, 0x79, 0x44, 0x40, 0xf1, 0xcc, 0x4d, 0x32, 0x9b, 0x2f, - 0x83, 0xef, 0x94, 0x9f, 0x03, 0x49, 0x12, 0x96, 0x50, 0xb8, 0xed, 0xbb, 0x46, 0xbd, 0x09, 0x24, - 0x80, 0xde, 0x05, 0x92, 0x5c, 0x05, 0xe3, 0x54, 0xf9, 0x20, 0xb6, 0xa7, 0x4f, 0xec, 0x0b, 0x6a, - 0xef, 0x07, 0x5c, 0x89, 0xc0, 0xf3, 0xa8, 0x73, 0x7c, 0x04, 0x42, 0x87, 0x39, 0xfc, 0xef, 0x06, - 0xa4, 0x1c, 0xbb, 0x0b, 0x90, 0xa1, 0x7b, 0xb0, 0x18, 0x8d, 0x24, 0x39, 0xd0, 0x0e, 0x38, 0xa7, - 0x36, 0x8c, 0xa4, 0x56, 0xd7, 0x23, 0x9c, 0xc6, 0x9a, 0x17, 0x84, 0xc2, 0x95, 0xdb, 0xb9, 0xfb, - 0xa5, 0x2f, 0x84, 0xe3, 0x38, 0x3a, 0x38, 0x81, 0x81, 0xbe, 0x60, 0x44, 0xf9, 0xfb, 0x81, 0x4d, - 0xbe, 0x50, 0x21, 0x59, 0xc0, 0xeb, 0x70, 0xfc, 0xc9, 0x0d, 0xbf, 0x0f, 0x2a, 0x03, 0xe8, 0xe8, - 0x6f, 0x10, 0xa7, 0x0b, 0x86, 0x2f, 0x21, 0x0c, 0x24, 0xa0, 0xe2, 0x06, 0xc0, 0xaa, 0xf3, 0xdc, - 0x00, 0x71, 0xd4, 0xb2, 0x18, 0x15, 0x78, 0x94, 0xdc, 0x80, 0x70, 0x7f, 0x4a, 0x11, 0x02, 0xca, - 0x61, 0x2d, 0x50, 0xfa, 0x70, 0x31, 0x5c, 0xd2, 0x09, 0x88, 0x5c, 0xf6, 0xc1, 0xee, 0xee, 0x4e, - 0x13, 0x06, 0xca, 0x6a, 0xc2, 0x32, 0x11, 0x2e, 0xa8, 0xb8, 0x61, 0x30, 0xaa, 0x87, 0x24, 0x86, - 0xe3, 0x21, 0xb7, 0x61, 0xd4, 0x12, 0x0a, 0x03, 0xde, 0x01, 0xc5, 0x76, 0x36, 0xf7, 0xa5, 0x4f, - 0x6c, 0x07, 0x4e, 0x48, 0x44, 0x91, 0xba, 0xea, 0x8b, 0xa9, 0xe1, 0x78, 0x19, 0x41, 0x09, 0x91, - 0x4b, 0x43, 0xd0, 0xa1, 0x54, 0x4d, 0x1d, 0xb9, 0x45, 0x80, 0x94, 0xc3, 0x1a, 0xe5, 0x87, 0x7f, - 0x66, 0xf6, 0x25, 0x90, 0xcd, 0x7b, 0xd3, 0xec, 0xc0, 0xd1, 0x10, 0xa7, 0x30, 0x42, 0x10, 0xab, - 0x03, 0xc9, 0x61, 0x60, 0x85, 0x03, 0xcf, 0x66, 0x87, 0xdc, 0xe9, 0x81, 0x00, 0xb5, 0xe3, 0x66, - 0xbc, 0x97, 0x03, 0x38, 0xbe, 0x86, 0x3f, 0xb9, 0x0d, 0xcc, 0xdb, 0xe0, 0x35, 0xa0, 0x84, 0xd0, - 0xfb, 0x37, 0x1e, 0xa4, 0xca, 0xbe, 0x70, 0x30, 0x18, 0x93, 0x0e, 0x8c, 0x48, 0x44, 0x48, 0x81, - 0x68, 0xb2, 0x96, 0xb7, 0x1b, 0xfa, 0x42, 0xea, 0x4f, 0x1e, 0xfb, 0x30, 0x32, 0xd4, 0x9a, 0xdb, - 0x50, 0xf2, 0xc1, 0xf7, 0x39, 0x8c, 0x4a, 0xef, 0xa3, 0x08, 0xfa, 0x7d, 0x20, 0x49, 0x5f, 0x44, - 0xf9, 0xfd, 0x00, 0x46, 0xa5, 0xec, 0x49, 0xed, 0xbe, 0xb3, 0x0b, 0x30, 0x75, 0xbd, 0x43, 0x20, - 0x89, 0x54, 0xf6, 0xd3, 0x66, 0xaa, 0xe7, 0x6e, 0x0f, 0x08, 0x4f, 0x2b, 0x03, 0x57, 0xc5, 0x06, - 0xe3, 0x49, 0x10, 0x84, 0x7d, 0x20, 0x31, 0x95, 0x29, 0x81, 0x70, 0x04, 0x2a, 0xbf, 0x62, 0x6c, - 0x41, 0x1e, 0x7d, 0x3a, 0x80, 0x42, 0x8b, 0xc3, 0x28, 0x75, 0x42, 0x04, 0x81, 0x11, 0x9a, 0xd8, - 0xf6, 0x3d, 0x10, 0xf4, 0xb2, 0x20, 0x0e, 0x0b, 0x4e, 0xf7, 0xf6, 0x61, 0x55, 0x7c, 0xde, 0xf7, - 0x95, 0x84, 0x45, 0xdb, 0xde, 0xed, 0x74, 0x4e, 0x48, 0x28, 0x81, 0xc4, 0xab, 0x82, 0x80, 0x38, - 0xa1, 0xc3, 0x93, 0xc8, 0x8e, 0x58, 0x9d, 0xd5, 0x61, 0x00, 0x87, 0xb4, 0xe1, 0xe3, 0x47, 0x09, - 0x62, 0x2b, 0x44, 0x9e, 0x82, 0x21, 0x70, 0x09, 0x0c, 0xf7, 0xc2, 0xd8, 0x45, 0xd6, 0x00, 0x92, - 0x80, 0x37, 0x6c, 0x36, 0x9a, 0x9f, 0x88, 0xa2, 0xdf, 0x29, 0x0d, 0x61, 0xa4, 0x0c, 0x8b, 0x10, - 0x46, 0xa9, 0x67, 0x30, 0x0e, 0xbc, 0xa4, 0x19, 0xea, 0x79, 0x9e, 0x66, 0xa8, 0x0b, 0xca, 0x5c, - 0x89, 0x6d, 0x85, 0x21, 0x25, 0x0e, 0xa0, 0x02, 0x3d, 0x7d, 0x22, 0x99, 0x0d, 0xa5, 0xa8, 0x18, - 0x90, 0x34, 0xc7, 0xa1, 0x94, 0x0c, 0x88, 0xe2, 0x02, 0x92, 0x8d, 0x39, 0x49, 0x66, 0x3b, 0x62, - 0x7d, 0x38, 0xbd, 0x56, 0xa6, 0xcb, 0xd4, 0x43, 0xea, 0x13, 0x23, 0x59, 0x08, 0xc3, 0xf3, 0x38, - 0xd9, 0x15, 0x07, 0x4a, 0x00, 0xe2, 0x9b, 0x3d, 0x72, 0x0b, 0xa3, 0x0f, 0x2a, 0x90, 0xd6, 0x15, - 0xac, 0xef, 0x37, 0xb7, 0x6b, 0x21, 0x11, 0xb1, 0xd6, 0x85, 0x51, 0x6b, 0x52, 0xf8, 0x50, 0x2a, - 0x50, 0x03, 0x09, 0x07, 0x8f, 0x8d, 0x85, 0x9e, 0x08, 0xee, 0xee, 0x01, 0x89, 0xad, 0x56, 0x92, - 0x99, 0xfd, 0x11, 0x86, 0xdf, 0x61, 0xfc, 0xcc, 0x9d, 0x53, 0x20, 0x11, 0x13, 0xd4, 0x61, 0xe4, - 0x94, 0x30, 0x0f, 0x4e, 0x05, 0x5a, 0xc9, 0xee, 0x2e, 0x83, 0xa3, 0x20, 0x12, 0x90, 0x4a, 0x23, - 0x75, 0xfe, 0x3a, 0xdd, 0xfb, 0x0c, 0x23, 0x54, 0xad, 0x77, 0x0b, 0xa5, 0x58, 0x1e, 0x0b, 0x01, - 0x95, 0x1e, 0xb3, 0x03, 0x3f, 0x0c, 0x24, 0x83, 0x53, 0x3f, 0x59, 0xb2, 0xf0, 0x82, 0x0d, 0xe0, - 0x74, 0x2c, 0x80, 0x51, 0xde, 0x13, 0x48, 0x0c, 0xc5, 0x24, 0x37, 0x1b, 0x44, 0x82, 0x8b, 0x70, - 0xed, 0x7a, 0x0b, 0x46, 0xca, 0x50, 0x18, 0xf0, 0x7a, 0x1b, 0x44, 0xc2, 0x3b, 0xb1, 0x15, 0xf5, - 0x98, 0x3c, 0xa5, 0x8a, 0x9c, 0x9c, 0x9d, 0xc1, 0x38, 0x5d, 0x1e, 0x10, 0xda, 0x8b, 0x85, 0x21, - 0x03, 0xd5, 0xcb, 0x99, 0x28, 0x7f, 0xdc, 0xe0, 0x0e, 0x04, 0xa8, 0x75, 0x21, 0x95, 0x6a, 0x78, - 0x5e, 0x75, 0x04, 0x4e, 0xa8, 0x92, 0x90, 0x8d, 0x66, 0x03, 0x46, 0xf1, 0x06, 0x87, 0xc2, 0x48, - 0xbd, 0xa9, 0x83, 0xf0, 0x91, 0x53, 0x69, 0xc3, 0xa8, 0x4c, 0x1b, 0xcb, 0x2d, 0x40, 0xe9, 0x2c, - 0x9e, 0x0f, 0x23, 0xdb, 0x15, 0x86, 0x9a, 0x65, 0xd2, 0xe1, 0x20, 0x38, 0x23, 0x05, 0xc4, 0x2a, - 0x18, 0xc5, 0x4b, 0x7e, 0xbc, 0x80, 0xe2, 0x57, 0xea, 0x05, 0x8c, 0xab, 0xcb, 0x20, 0xf9, 0xe7, - 0x82, 0x0a, 0x06, 0x03, 0xbd, 0x0c, 0xa1, 0xb4, 0xd8, 0xb9, 0x6b, 0xb4, 0x87, 0x11, 0x57, 0x60, - 0x5a, 0xb8, 0x8f, 0xb9, 0xb8, 0x26, 0x71, 0x4e, 0x08, 0x08, 0x5e, 0x23, 0x84, 0x21, 0x16, 0x02, - 0xc5, 0xcf, 0x54, 0x04, 0x25, 0x84, 0x1a, 0x04, 0xc0, 0x0a, 0xc3, 0x10, 0x88, 0x04, 0x08, 0x61, - 0xe4, 0xaf, 0x39, 0x36, 0x0c, 0x77, 0x0c, 0x94, 0xfe, 0x3f, 0xae, 0x70, 0xeb, 0x9d, 0x53, 0x57, - 0xc0, 0xc9, 0x60, 0x1c, 0xf7, 0x5f, 0xae, 0x83, 0xe9, 0xbf, 0x2c, 0x7d, 0x47, 0x1e, 0xdb, 0x30, - 0xa0, 0xb6, 0xcd, 0x05, 0x90, 0x3c, 0x0a, 0x18, 0xc7, 0xcb, 0x0f, 0x41, 0x68, 0xfe, 0x7f, 0x60, - 0xa4, 0x75, 0x10, 0x79, 0xcf, 0x6d, 0x58, 0x95, 0xba, 0x4e, 0x7b, 0xc7, 0x40, 0x70, 0x4a, 0xd2, - 0xd4, 0xda, 0x63, 0xfc, 0x3b, 0x1c, 0x55, 0x30, 0xae, 0x1a, 0x72, 0x1c, 0xee, 0x39, 0x8e, 0xa0, - 0x30, 0x92, 0x3c, 0xec, 0xc0, 0x75, 0x29, 0x88, 0xd9, 0xb5, 0xa9, 0x84, 0x42, 0x10, 0x7c, 0xfc, - 0x6b, 0x2f, 0x6c, 0x9c, 0xc2, 0x48, 0x01, 0x94, 0xa2, 0x0f, 0xa4, 0xaa, 0x05, 0x08, 0xca, 0x2d, - 0x29, 0xdd, 0xf9, 0x07, 0x10, 0xe2, 0xcd, 0xf1, 0xe4, 0x2d, 0x94, 0x7e, 0xbb, 0x50, 0x6a, 0x05, - 0x31, 0xe9, 0xc0, 0xa8, 0x1f, 0xe7, 0xb0, 0x01, 0x53, 0xc4, 0xfb, 0x4b, 0x90, 0x30, 0xa4, 0x02, - 0x60, 0xe6, 0xcc, 0x74, 0x0a, 0x68, 0x03, 0x4c, 0xc5, 0x49, 0x79, 0xe9, 0xc0, 0x28, 0x78, 0x93, - 0x24, 0x54, 0x7d, 0xb9, 0x84, 0xa2, 0x73, 0x01, 0xc5, 0x11, 0x10, 0xe5, 0x8f, 0x5b, 0x6f, 0x81, - 0x0a, 0x24, 0x80, 0x95, 0x73, 0x4f, 0x94, 0x7f, 0x4e, 0x1c, 0x16, 0x80, 0xb0, 0xcf, 0x6c, 0x16, - 0x82, 0xe9, 0xc2, 0xe6, 0xda, 0x3b, 0xdb, 0xdb, 0x77, 0x30, 0xba, 0xab, 0x00, 0xea, 0x27, 0xdf, - 0x17, 0xcc, 0x19, 0x50, 0x38, 0x95, 0x0c, 0xfe, 0x52, 0x13, 0x91, 0x0b, 0xe6, 0x98, 0x11, 0xe5, - 0x1f, 0x45, 0x30, 0xda, 0x40, 0xf4, 0x99, 0x92, 0x50, 0x7c, 0x9f, 0xf5, 0xe6, 0x6e, 0x0b, 0x62, - 0x4a, 0x28, 0x2c, 0x7d, 0x96, 0xd6, 0xc2, 0x4a, 0x74, 0x31, 0x8c, 0x8a, 0x89, 0x30, 0x3a, 0x70, - 0x0d, 0xa1, 0xb4, 0x5c, 0x01, 0x62, 0x01, 0x4f, 0x55, 0xba, 0xe9, 0x89, 0xc0, 0x65, 0x30, 0x76, - 0xeb, 0xb8, 0xf7, 0x0a, 0x20, 0xfb, 0x37, 0xa9, 0xce, 0x71, 0x0c, 0xa3, 0x3a, 0xc7, 0x3f, 0x8d, - 0xdd, 0x66, 0x1d, 0x86, 0x87, 0x8c, 0x0e, 0x60, 0xf5, 0xdf, 0xb9, 0x61, 0x36, 0x3b, 0x1b, 0x6d, - 0xde, 0xc3, 0x9c, 0x29, 0xe3, 0x99, 0xae, 0xb8, 0x7e, 0xa7, 0x77, 0xdc, 0x39, 0xa7, 0xac, 0x42, - 0xef, 0x94, 0x20, 0xd5, 0x88, 0x4b, 0x95, 0x28, 0xc0, 0x6e, 0x86, 0x89, 0xab, 0x08, 0xea, 0x52, - 0x41, 0xb9, 0x1d, 0x5f, 0xf6, 0xf5, 0x9d, 0xd9, 0xd5, 0x49, 0x57, 0xe6, 0xfc, 0x68, 0xdf, 0x6a, - 0xec, 0x74, 0x9a, 0x5d, 0xeb, 0x72, 0x48, 0xad, 0x34, 0x2f, 0x43, 0x5a, 0x49, 0x64, 0x9b, 0x75, - 0x7a, 0xfc, 0xd1, 0xaa, 0x5a, 0xcc, 0x4d, 0xb2, 0x22, 0xb3, 0x6f, 0x9b, 0xca, 0x45, 0x10, 0x09, - 0x3b, 0xdb, 0x3c, 0x3c, 0xb9, 0xfe, 0xbf, 0xf4, 0xfe, 0x36, 0x10, 0xce, 0xa8, 0xb3, 0xf6, 0x64, - 0x7a, 0xde, 0xe7, 0x1b, 0xeb, 0x0f, 0x22, 0xf7, 0xc4, 0x20, 0xf2, 0x29, 0x57, 0x95, 0xae, 0xa5, - 0x44, 0x44, 0x73, 0x0e, 0x34, 0x35, 0x4a, 0xa6, 0xf9, 0x33, 0xbc, 0xe7, 0xe7, 0xff, 0xf6, 0x7c, - 0xa7, 0xe3, 0xed, 0xf1, 0x7e, 0xfd, 0x8d, 0x37, 0xce, 0x4c, 0x65, 0x8f, 0xf3, 0x40, 0x11, 0xc5, - 0x02, 0x3e, 0xd7, 0xfe, 0xa8, 0x48, 0x7b, 0x48, 0x7d, 0x12, 0x12, 0x35, 0x8c, 0x27, 0xfe, 0x43, - 0x10, 0x52, 0x6e, 0x07, 0xdc, 0x65, 0x83, 0x2a, 0x4b, 0xa7, 0xfd, 0xc3, 0x4b, 0x1f, 0x3f, 0x48, - 0x45, 0xd4, 0x1b, 0xd3, 0xff, 0xfa, 0xab, 0xfc, 0xe2, 0x35, 0x2a, 0x32, 0xea, 0x3f, 0xde, 0xf0, - 0xcd, 0xb7, 0x78, 0x44, 0x73, 0x4f, 0x2e, 0x7b, 0x63, 0x9a, 0xfe, 0xcb, 0x78, 0xbc, 0xff, 0xeb, - 0x6f, 0x7c, 0x6d, 0x3f, 0x99, 0x8a, 0x4a, 0xd7, 0xaa, 0xbd, 0xf1, 0xc5, 0x9e, 0xa0, 0x2e, 0xbb, - 0x9b, 0x6f, 0xca, 0x53, 0xdc, 0x61, 0x57, 0x99, 0x3b, 0xc7, 0xb9, 0xcb, 0x7a, 0xde, 0xa7, 0xcf, - 0x77, 0x38, 0x7a, 0xae, 0x39, 0x05, 0x6d, 0xde, 0xc3, 0xfc, 0xe4, 0xf0, 0x8e, 0x5e, 0xcb, 0xf0, - 0x36, 0x3f, 0x60, 0x62, 0xce, 0xfd, 0x3d, 0xb5, 0x2b, 0xe6, 0x9f, 0xc1, 0x97, 0xf6, 0xd4, 0xbc, - 0x93, 0xf8, 0xff, 0xb1, 0xf7, 0xb6, 0xbd, 0x89, 0x63, 0x4b, 0xbb, 0xf0, 0xf7, 0xfe, 0x15, 0x16, - 0xd2, 0xe8, 0x86, 0x9e, 0x98, 0x00, 0x21, 0x24, 0x41, 0xda, 0x6a, 0x65, 0xa6, 0x7b, 0xe6, 0x89, - 0x9e, 0xce, 0x4c, 0x94, 0x9e, 0xdd, 0x3a, 0xfb, 0x04, 0x76, 0xcb, 0x8d, 0x17, 0x89, 0x35, 0x8e, - 0xcd, 0x6d, 0x9b, 0xec, 0xce, 0xee, 0xce, 0x7f, 0x3f, 0xb2, 0x31, 0xe6, 0x35, 0x09, 0xb6, 0xab, - 0xca, 0x06, 0xae, 0x7c, 0x48, 0x80, 0xc0, 0x5a, 0xc6, 0x6b, 0xd5, 0xcb, 0x75, 0x55, 0xad, 0xaa, - 0xcd, 0xb6, 0x56, 0xea, 0x2d, 0x96, 0x65, 0xab, 0x65, 0xde, 0x72, 0x79, 0x4d, 0x4d, 0xe6, 0x2d, - 0x48, 0x66, 0x57, 0xb2, 0x6c, 0x49, 0x1e, 0xef, 0x65, 0xd3, 0xad, 0x9a, 0x7c, 0x60, 0x30, 0xdd, - 0x11, 0x29, 0xef, 0xf9, 0x2c, 0xb1, 0x23, 0xfa, 0x7c, 0xca, 0xfb, 0x95, 0x6e, 0xdb, 0x66, 0xde, - 0xbe, 0x79, 0xb6, 0x71, 0xee, 0xed, 0xcc, 0xe1, 0x41, 0x65, 0xda, 0xde, 0xbc, 0xee, 0x53, 0xca, - 0xed, 0x9e, 0xd1, 0x31, 0x4a, 0xb9, 0xde, 0x69, 0xc5, 0x20, 0xf9, 0xa0, 0xa9, 0xfc, 0x81, 0x67, - 0x8d, 0x36, 0x76, 0x69, 0x5e, 0xdc, 0x31, 0xf3, 0x83, 0x65, 0xbc, 0xd3, 0xb1, 0xa0, 0x34, 0x32, - 0x7e, 0x3c, 0xab, 0xc0, 0x50, 0x08, 0x0e, 0x99, 0x00, 0x51, 0x09, 0x12, 0xb9, 0x40, 0x91, 0x0b, - 0x16, 0xa5, 0x80, 0x65, 0x13, 0xb4, 0x1c, 0x04, 0x43, 0x74, 0xe1, 0x11, 0x4a, 0x22, 0xd9, 0x2d, - 0x7e, 0xe0, 0x59, 0xce, 0x6d, 0x9e, 0xed, 0x32, 0x35, 0x32, 0xa7, 0xa2, 0x77, 0x20, 0x07, 0x7f, - 0x40, 0xc8, 0x27, 0xd0, 0xb0, 0x3f, 0x79, 0xf8, 0x86, 0x73, 0xdb, 0x32, 0xfc, 0x9c, 0x82, 0x45, - 0x29, 0xf5, 0x1c, 0x84, 0x04, 0xbb, 0x22, 0xc8, 0x43, 0x58, 0x4c, 0x16, 0x20, 0xf7, 0xf4, 0x4f, - 0x6f, 0x8a, 0xf9, 0x74, 0x5f, 0x54, 0x6a, 0x53, 0x32, 0x19, 0xcf, 0x8e, 0xf3, 0x78, 0xeb, 0x06, - 0xba, 0x3b, 0xd0, 0x07, 0xee, 0xfd, 0xc8, 0x53, 0xbe, 0xaf, 0x4c, 0xdd, 0x56, 0xc6, 0x30, 0x1c, - 0x34, 0xa3, 0x22, 0x96, 0xe0, 0x86, 0x2b, 0xca, 0x09, 0x95, 0x95, 0x99, 0xdf, 0xe5, 0x99, 0x0e, - 0x94, 0x71, 0x19, 0xde, 0xab, 0xa1, 0x31, 0xb6, 0x83, 0x5c, 0xea, 0xae, 0x12, 0x8a, 0x5d, 0xb6, - 0x7d, 0xdf, 0x87, 0x97, 0x06, 0x2f, 0x0d, 0x5e, 0x5a, 0x8a, 0xdd, 0xf2, 0xd5, 0x75, 0x6d, 0x65, - 0x38, 0x14, 0x6e, 0x5a, 0x13, 0x6e, 0x5a, 0x11, 0x6e, 0x9a, 0x79, 0x6f, 0x39, 0x9f, 0x02, 0x23, - 0x18, 0xc3, 0x59, 0x2b, 0xd2, 0x59, 0x9b, 0x5b, 0x06, 0xb8, 0x6c, 0x70, 0xd9, 0x5e, 0xbf, 0x6c, - 0xcb, 0x31, 0xd5, 0xb7, 0xfc, 0x0e, 0xdb, 0x64, 0x98, 0x22, 0xdd, 0xb5, 0x06, 0x7c, 0x35, 0xf8, - 0x6a, 0xf0, 0xd5, 0xf8, 0x7d, 0xb5, 0xb1, 0xe5, 0x04, 0x47, 0x2d, 0x02, 0x57, 0xed, 0x24, 0xc7, - 0x10, 0xd7, 0x86, 0x73, 0x5b, 0x0a, 0x3f, 0xe9, 0xd2, 0x72, 0xe8, 0xdc, 0x94, 0xcf, 0x86, 0x3d, - 0x56, 0xd9, 0x95, 0xc2, 0xca, 0x78, 0xbf, 0x79, 0xc6, 0x20, 0xb4, 0x6c, 0xef, 0xad, 0x5b, 0x2b, - 0xf0, 0x09, 0x07, 0xfe, 0x43, 0xdd, 0x1a, 0x81, 0xf5, 0x10, 0x5e, 0xeb, 0xd0, 0xb0, 0x7d, 0x95, - 0xdf, 0xd7, 0x20, 0x70, 0x1a, 0x2f, 0x8d, 0x6f, 0xf4, 0x4b, 0xd1, 0x6e, 0x9d, 0xb5, 0xcf, 0x3a, - 0x27, 0xad, 0xb3, 0xe3, 0xfd, 0x5b, 0x13, 0xf8, 0x7f, 0xbb, 0xef, 0xff, 0x39, 0x13, 0xad, 0x9e, - 0xd3, 0xfd, 0x8b, 0x46, 0x81, 0x27, 0x05, 0x4f, 0x0a, 0x9e, 0x54, 0x8a, 0xdd, 0x82, 0xd8, 0x64, - 0x89, 0x49, 0xaf, 0x93, 0x56, 0xeb, 0xa8, 0xab, 0x9d, 0x6b, 0xff, 0x3a, 0xff, 0xe3, 0x77, 0xed, - 0xbd, 0x11, 0x18, 0xda, 0xa5, 0x6b, 0x2a, 0x5b, 0x1b, 0xba, 0xde, 0x8c, 0x7f, 0xd1, 0x2e, 0x0d, - 0xc7, 0xb8, 0x55, 0xd1, 0x3e, 0x06, 0xed, 0xc5, 0x43, 0x7b, 0xa5, 0x5e, 0x08, 0x38, 0x3e, 0x7b, - 0xe7, 0xf8, 0xb0, 0x66, 0x81, 0xe5, 0xbc, 0x51, 0x79, 0xd2, 0xd5, 0xe7, 0xd3, 0xc3, 0x17, 0x9e, - 0x1d, 0xc6, 0x09, 0x93, 0x4c, 0xe7, 0x02, 0x52, 0xdc, 0xa2, 0x8c, 0x0c, 0x62, 0x2e, 0xe6, 0x30, - 0xa3, 0xcf, 0x88, 0xc4, 0x4f, 0x24, 0x7e, 0x32, 0xfb, 0x78, 0xb3, 0x22, 0x50, 0xca, 0x18, 0x7a, - 0x2a, 0xd3, 0x7a, 0x4f, 0x9d, 0xba, 0x0c, 0xfc, 0x58, 0xe5, 0x2a, 0xd6, 0x32, 0xf5, 0x7a, 0xac, - 0x21, 0x0e, 0x27, 0xf2, 0x55, 0x06, 0x3d, 0x31, 0x7a, 0x68, 0xe7, 0x50, 0x13, 0xe1, 0xa7, 0xf7, - 0x24, 0x3d, 0x7c, 0x04, 0x2d, 0xb1, 0x4e, 0x4b, 0x8c, 0x76, 0x26, 0x3d, 0xdc, 0x98, 0x54, 0xdc, - 0xdc, 0xe0, 0xa4, 0xd8, 0xab, 0xfb, 0x65, 0x36, 0x54, 0x3e, 0xfa, 0xa5, 0xb9, 0x2b, 0xf4, 0xcb, - 0x08, 0xf4, 0x8b, 0x90, 0x70, 0x15, 0x43, 0xbf, 0x64, 0x15, 0xba, 0x65, 0xe1, 0xcb, 0xbf, 0xc8, - 0x4b, 0x22, 0x98, 0x77, 0x89, 0xf3, 0x09, 0x22, 0x99, 0x40, 0x52, 0x0a, 0x26, 0xb9, 0x80, 0x4a, - 0x30, 0x25, 0x24, 0x02, 0x2b, 0x4b, 0x93, 0xe4, 0x14, 0x60, 0x22, 0xde, 0x23, 0xe7, 0x7e, 0xcb, - 0x2b, 0xd8, 0xc9, 0x40, 0x19, 0xcf, 0x22, 0xbe, 0xba, 0x79, 0x33, 0x9d, 0x51, 0x64, 0x16, 0x77, - 0x72, 0xb1, 0xe7, 0x10, 0x7f, 0x36, 0x35, 0xc0, 0xa5, 0x0e, 0xd8, 0xd5, 0x02, 0xbb, 0x7a, 0xe0, - 0x54, 0x13, 0x34, 0xea, 0x82, 0x48, 0x6d, 0x90, 0xab, 0x8f, 0x39, 0xbc, 0x4a, 0xbf, 0x9f, 0x66, - 0x68, 0x96, 0x7a, 0x23, 0xe5, 0x8b, 0xa2, 0x8a, 0xa9, 0x15, 0x4e, 0xf5, 0xc2, 0xae, 0x66, 0xb8, - 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x56, 0x1d, 0x11, 0xab, 0xa5, 0xfc, - 0x8c, 0x62, 0x2a, 0x86, 0x4c, 0x8f, 0xb1, 0x88, 0xee, 0xb8, 0xfa, 0x7f, 0x5d, 0x47, 0x71, 0x6c, - 0xfe, 0x24, 0xe6, 0xcc, 0x30, 0xf6, 0x95, 0x11, 0x04, 0xca, 0x73, 0x72, 0xc7, 0x82, 0x9f, 0x9d, - 0xa0, 0x5a, 0xbd, 0x69, 0xe8, 0x67, 0xfd, 0x1f, 0x37, 0x4d, 0xfd, 0xac, 0x3f, 0x79, 0xd8, 0x8c, - 0xfe, 0x4c, 0x1e, 0xb7, 0x6e, 0x1a, 0x7a, 0x7b, 0xfa, 0xf8, 0xf8, 0xa6, 0xa1, 0x1f, 0xf7, 0x6b, - 0xbd, 0x5e, 0xbd, 0xf6, 0xfd, 0xe8, 0x29, 0xfd, 0x07, 0xab, 0x3f, 0xdd, 0xf4, 0x7a, 0xa3, 0xef, - 0x7f, 0x3c, 0x85, 0xbf, 0x3f, 0x3e, 0xf5, 0x7f, 0xae, 0xbd, 0xe3, 0x92, 0xe3, 0x70, 0xe2, 0x5e, - 0xaf, 0xde, 0x7f, 0x4b, 0x2f, 0x56, 0xfd, 0x52, 0x8b, 0x15, 0x51, 0x10, 0xf3, 0xd9, 0xf1, 0xc9, - 0x83, 0x9b, 0xfc, 0xda, 0x8b, 0xf0, 0x16, 0xc7, 0xd6, 0x47, 0xb7, 0x95, 0x73, 0x1b, 0xc5, 0x15, - 0x98, 0xdc, 0xa1, 0xc5, 0x69, 0xe0, 0x19, 0xc1, 0x33, 0x82, 0x67, 0x04, 0xcf, 0x88, 0x6c, 0xb7, - 0x8f, 0x2d, 0x27, 0x38, 0x65, 0x74, 0x85, 0x8e, 0x19, 0x86, 0xa6, 0x39, 0xe0, 0xf0, 0xdc, 0x0f, - 0x8f, 0x74, 0x6a, 0xd4, 0x07, 0x22, 0x9e, 0x9d, 0x84, 0xf8, 0xa0, 0xc4, 0xb3, 0xf3, 0x70, 0x25, - 0xeb, 0x3f, 0xbf, 0x65, 0xa9, 0x93, 0xf8, 0x85, 0xa4, 0x78, 0x71, 0x0b, 0x18, 0xdf, 0xe4, 0xb6, - 0xc0, 0x51, 0x0b, 0x7b, 0xa0, 0x14, 0x76, 0x81, 0x6f, 0x54, 0x40, 0x90, 0x6d, 0x83, 0x20, 0xa5, - 0x62, 0x86, 0x99, 0x16, 0x88, 0x27, 0xaf, 0xd3, 0x1a, 0x3d, 0xb4, 0x0f, 0x93, 0xa4, 0x8e, 0xe9, - 0xa3, 0x4c, 0xe9, 0x9e, 0x7c, 0xab, 0x43, 0x71, 0x5a, 0x8f, 0x90, 0x5e, 0xa7, 0xa7, 0xd5, 0x89, - 0x41, 0x23, 0xa2, 0x73, 0x88, 0xce, 0x49, 0x83, 0xbf, 0x72, 0xe9, 0x60, 0x72, 0x90, 0x47, 0x90, - 0x68, 0xfb, 0x9a, 0xf0, 0x37, 0x4f, 0x08, 0xc7, 0x9c, 0x4b, 0xcc, 0x8d, 0x16, 0xba, 0x1b, 0xa7, - 0xe7, 0x4e, 0x9e, 0x50, 0x2d, 0x7c, 0x39, 0x54, 0xfb, 0xa4, 0xca, 0x3e, 0xb9, 0x76, 0x9f, 0x0c, - 0x5b, 0xf2, 0xf4, 0x8b, 0x16, 0x14, 0x3c, 0x14, 0xfc, 0x1e, 0x2a, 0x78, 0xa4, 0x5f, 0x20, 0xc8, - 0xc0, 0xac, 0x66, 0xb8, 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x87, 0xf6, - 0x41, 0xfa, 0xc5, 0x6b, 0x8e, 0x0b, 0xd2, 0x2f, 0x90, 0x7e, 0x51, 0x24, 0xc5, 0x47, 0xe8, 0x3e, - 0xba, 0x9e, 0x75, 0xcb, 0x10, 0x35, 0x9a, 0x19, 0xa2, 0xc9, 0xf8, 0x30, 0xf9, 0x30, 0xf9, 0x30, - 0xf9, 0x30, 0xf9, 0x84, 0x26, 0x3f, 0x31, 0xf8, 0x2c, 0x2a, 0x66, 0xc1, 0xde, 0xb7, 0x19, 0xc6, - 0xfe, 0xe0, 0x8c, 0xef, 0x91, 0xca, 0x46, 0xba, 0x27, 0x90, 0xca, 0x06, 0x93, 0x03, 0x93, 0x03, - 0x93, 0xc3, 0xb4, 0xdb, 0x91, 0xca, 0xb6, 0xfc, 0x83, 0x54, 0xb6, 0xcd, 0xe6, 0x41, 0x2a, 0x5b, - 0xa6, 0x2d, 0x80, 0x54, 0xb6, 0xed, 0xd8, 0x03, 0xfb, 0x99, 0xca, 0x86, 0x8c, 0xad, 0x54, 0xe3, - 0x4a, 0x66, 0x6c, 0x6d, 0xd0, 0x6a, 0x5e, 0x6e, 0x71, 0x28, 0xa2, 0xfa, 0x0f, 0x9e, 0xc7, 0x90, - 0xb2, 0x15, 0x8d, 0x8a, 0x92, 0x0a, 0xa5, 0x83, 0x41, 0x88, 0xe9, 0x17, 0x01, 0x73, 0x76, 0x3c, - 0xa6, 0x1f, 0x0a, 0xbb, 0x7e, 0xeb, 0xb9, 0x63, 0xc6, 0xd8, 0xfe, 0xdc, 0x1c, 0x3c, 0xec, 0x4b, - 0x13, 0xec, 0x0b, 0xd8, 0x17, 0xb0, 0x2f, 0xe5, 0x63, 0x5f, 0xa8, 0xd5, 0x55, 0x32, 0x30, 0x71, - 0x41, 0xa9, 0x67, 0x85, 0x89, 0xb4, 0xc0, 0x94, 0x90, 0xfa, 0x62, 0x57, 0x63, 0x12, 0xea, 0x4c, - 0x4c, 0xad, 0x49, 0xa9, 0x37, 0x71, 0x35, 0x27, 0xae, 0xee, 0x24, 0xd5, 0x1e, 0x33, 0xc9, 0xc0, - 0x24, 0x2f, 0x5c, 0xea, 0x30, 0x99, 0xc0, 0x18, 0x0c, 0xd4, 0x28, 0xd0, 0xef, 0x5d, 0x53, 0x60, - 0x23, 0x27, 0xc5, 0x36, 0xe7, 0x26, 0x65, 0xde, 0x59, 0x14, 0x6d, 0x29, 0x37, 0x9e, 0x2c, 0xa2, - 0xc7, 0x2a, 0xac, 0xf3, 0xf4, 0x99, 0xef, 0x17, 0x4f, 0x74, 0x52, 0xdc, 0xd0, 0x48, 0x1a, 0x1c, - 0x71, 0xc3, 0x23, 0x6d, 0x80, 0x0a, 0x33, 0x44, 0x85, 0x19, 0xa4, 0x22, 0x0c, 0x13, 0xaf, 0x81, - 0x62, 0x36, 0x54, 0xc9, 0x0d, 0x63, 0x8b, 0x9e, 0x3e, 0x2b, 0x6d, 0xf9, 0xdb, 0xce, 0xa7, 0xf6, - 0xbe, 0x9b, 0x5b, 0xbd, 0x44, 0xcc, 0x67, 0xdd, 0x57, 0xe6, 0x13, 0x3b, 0xfb, 0x2e, 0x27, 0x49, - 0x9c, 0xd1, 0x4a, 0xc3, 0x7c, 0x50, 0x5e, 0x60, 0xf9, 0x51, 0x1f, 0xac, 0x49, 0x4c, 0xe3, 0xc1, - 0xb0, 0x05, 0x9d, 0xb3, 0xf5, 0xf3, 0xef, 0x92, 0x9f, 0xd6, 0x6c, 0x34, 0xe0, 0xa5, 0xc1, 0x4b, - 0x83, 0x97, 0x06, 0x2f, 0x0d, 0x5e, 0x9a, 0x8c, 0xb4, 0x8d, 0x2d, 0x27, 0x68, 0x76, 0x04, 0x9d, - 0xb4, 0x8e, 0xc0, 0x54, 0xbc, 0x49, 0x71, 0xcb, 0x3f, 0x32, 0xea, 0x43, 0x93, 0x4a, 0x9a, 0x5b, - 0x99, 0x74, 0x9a, 0x41, 0xd5, 0x3c, 0x90, 0x9d, 0x57, 0x3a, 0xa1, 0x6a, 0x55, 0x46, 0xa4, 0x12, - 0xac, 0x84, 0xd5, 0xcc, 0xe2, 0x96, 0x32, 0xbe, 0x15, 0xb7, 0xa5, 0xda, 0x8d, 0xb3, 0x63, 0xec, - 0x2a, 0xa9, 0x5d, 0xf5, 0x66, 0x37, 0x66, 0xe9, 0x03, 0xe5, 0x03, 0xe5, 0x73, 0xdd, 0xae, 0x91, - 0xa7, 0xd4, 0xfd, 0x28, 0x90, 0x83, 0xf5, 0xd3, 0x09, 0x77, 0x09, 0xc7, 0x87, 0x10, 0x03, 0x40, - 0x1e, 0x40, 0x1e, 0x40, 0x1e, 0x40, 0x1e, 0x40, 0x5e, 0x46, 0xda, 0x10, 0x6e, 0x81, 0x23, 0xb6, - 0x83, 0x8e, 0x98, 0x6e, 0x2a, 0xdb, 0x78, 0x14, 0x77, 0xc7, 0xe2, 0x69, 0x77, 0xc9, 0x29, 0x43, - 0x68, 0x05, 0x1e, 0x19, 0x3c, 0x32, 0x78, 0x64, 0xf0, 0xc8, 0x84, 0xa4, 0x0d, 0xa1, 0x95, 0xdc, - 0x3f, 0xfb, 0x12, 0x5a, 0x69, 0x80, 0x04, 0x17, 0xfa, 0xd9, 0x9b, 0xd0, 0xca, 0x51, 0xa7, 0x81, - 0x5d, 0x25, 0xb6, 0xab, 0x10, 0x5a, 0x01, 0xa2, 0x07, 0xa2, 0x7f, 0x0d, 0xd1, 0x5b, 0xae, 0x67, - 0x05, 0xa2, 0x60, 0x3e, 0x9e, 0x11, 0x49, 0x92, 0x40, 0xf2, 0x40, 0xf2, 0x40, 0xf2, 0x40, 0xf2, - 0x40, 0xf2, 0x19, 0x91, 0xfc, 0xa9, 0x20, 0x90, 0x3f, 0x06, 0x90, 0xdf, 0x52, 0x20, 0x8f, 0x1c, - 0x49, 0x00, 0x79, 0xe2, 0x2d, 0xd5, 0x3a, 0x6e, 0x63, 0x53, 0x01, 0xc7, 0x03, 0xc7, 0x03, 0xc7, - 0x97, 0x03, 0xc7, 0x3f, 0x58, 0x5e, 0x30, 0x36, 0xec, 0x69, 0x79, 0x7e, 0x39, 0x38, 0xbf, 0x3c, - 0x31, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0x2a, 0x70, 0xea, 0x4a, 0xcf, 0x14, 0xc9, 0x34, - 0xc0, 0x33, 0x81, 0xb9, 0xe2, 0x7b, 0xb9, 0x73, 0x60, 0x75, 0x5d, 0x83, 0xbb, 0x8a, 0x20, 0xb2, - 0x61, 0x6c, 0x78, 0xf7, 0xbc, 0x1d, 0x62, 0x6e, 0x84, 0xf7, 0xec, 0xc4, 0x45, 0x37, 0xc8, 0x13, - 0xfb, 0xb6, 0xfd, 0x37, 0x3b, 0x84, 0xc0, 0x8b, 0x91, 0xc6, 0x0e, 0xa4, 0x91, 0x5d, 0x1a, 0xbb, - 0x3f, 0x42, 0x99, 0x31, 0xf4, 0xe1, 0xb9, 0xfe, 0x5b, 0xff, 0x7b, 0xe3, 0xa0, 0xfd, 0x54, 0xeb, - 0xd6, 0xaa, 0xcb, 0xaf, 0x75, 0x6b, 0xdf, 0x1b, 0x07, 0xc7, 0x4f, 0xd5, 0xea, 0x9a, 0xff, 0xbc, - 0x5b, 0x37, 0x46, 0xed, 0x47, 0xb5, 0x5a, 0x8d, 0xe5, 0x70, 0x41, 0x36, 0x6f, 0x1a, 0xcd, 0xfe, - 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0x22, 0xdd, 0x1b, 0xbd, 0xb9, 0x26, 0xd8, 0xf4, 0xf2, 0x25, 0x15, - 0xf6, 0xef, 0x6e, 0xff, 0xe7, 0x6e, 0xed, 0x7b, 0xe7, 0x69, 0xfa, 0x38, 0xfa, 0x5d, 0xfb, 0x51, - 0xad, 0xbf, 0xed, 0xf5, 0xea, 0xf5, 0xb7, 0xb5, 0xc9, 0x0d, 0x88, 0xdf, 0xf7, 0x76, 0xf2, 0xdf, - 0x77, 0xdd, 0xee, 0xca, 0x4b, 0xb5, 0xea, 0x4f, 0xf5, 0x5d, 0x54, 0x4b, 0x60, 0x57, 0x5e, 0xdc, - 0x42, 0x1f, 0x2d, 0x3f, 0x38, 0x0f, 0x02, 0x4f, 0xc6, 0x35, 0xbd, 0xb4, 0x9c, 0x0f, 0x76, 0x54, - 0xb2, 0x48, 0x88, 0x48, 0xac, 0x5c, 0x1a, 0xdf, 0xe6, 0x66, 0x6c, 0x9e, 0xb6, 0xdb, 0x9d, 0x93, - 0x76, 0xbb, 0x71, 0x72, 0x74, 0xd2, 0x38, 0x3b, 0x3e, 0x6e, 0x76, 0x9a, 0x12, 0xd1, 0x95, 0x3f, - 0x3d, 0x53, 0x79, 0xca, 0xfc, 0xe5, 0xb1, 0xd2, 0xd5, 0x9c, 0xb1, 0x6d, 0x83, 0x8f, 0x03, 0x1f, - 0xc7, 0xcd, 0xc7, 0x79, 0xee, 0x38, 0x50, 0x9e, 0x6e, 0x99, 0xf2, 0x8c, 0xdc, 0x6c, 0x6a, 0x70, - 0x72, 0xe0, 0xe4, 0xc0, 0xc9, 0x81, 0x93, 0x03, 0x27, 0x87, 0xdc, 0x91, 0xed, 0x23, 0x00, 0x90, - 0x3b, 0x22, 0x79, 0x01, 0xc8, 0x1d, 0xe1, 0xde, 0x52, 0xad, 0x63, 0x94, 0xd7, 0x12, 0xdb, 0x54, - 0x60, 0x37, 0x80, 0x55, 0x77, 0x02, 0xab, 0x6e, 0x55, 0x27, 0x16, 0xa1, 0x05, 0x17, 0x6d, 0x6f, - 0xfa, 0xe0, 0x79, 0xa3, 0xc3, 0x59, 0xaf, 0xbd, 0xc3, 0xb8, 0x77, 0xd5, 0x96, 0xb4, 0xe1, 0x65, - 0x58, 0xe9, 0x4a, 0x72, 0xcb, 0xf4, 0xc0, 0x33, 0x06, 0x7f, 0x5b, 0x8e, 0x40, 0xc7, 0xb0, 0x35, - 0x73, 0xa2, 0x7b, 0x58, 0x51, 0x2c, 0x06, 0xba, 0x87, 0x6d, 0x1d, 0x4b, 0x81, 0xee, 0x61, 0xcf, - 0xdd, 0x18, 0xf6, 0xee, 0x61, 0xcc, 0x4d, 0x15, 0x57, 0x84, 0x92, 0xb5, 0xb9, 0xa2, 0x90, 0x9a, - 0x14, 0x53, 0x97, 0x92, 0x6a, 0x53, 0x5c, 0x7d, 0x4a, 0xab, 0xd1, 0xc2, 0xd4, 0x69, 0x61, 0x6a, - 0xb5, 0x08, 0xf5, 0x2a, 0x83, 0x3e, 0xb9, 0xb1, 0x21, 0xb7, 0xda, 0x4d, 0x26, 0x9a, 0x9e, 0x3b, - 0xd7, 0x4d, 0x35, 0xf0, 0x54, 0xbc, 0x46, 0x42, 0x72, 0xb0, 0x7c, 0xf6, 0x7d, 0xee, 0x1a, 0x84, - 0xf6, 0xa5, 0xe4, 0x69, 0xf8, 0x64, 0xd2, 0x86, 0x4c, 0x1a, 0x4b, 0x5f, 0xe8, 0x1e, 0xca, 0xc4, - 0x39, 0xc5, 0x4d, 0x5e, 0x11, 0xa6, 0xaf, 0x30, 0x13, 0x58, 0x94, 0x29, 0x2c, 0xdc, 0x24, 0x16, - 0x6e, 0x1a, 0x8b, 0x34, 0x91, 0x32, 0xa6, 0x52, 0xc8, 0x64, 0x26, 0x37, 0x52, 0x2c, 0x6e, 0xba, - 0x22, 0xad, 0x52, 0xf1, 0xd3, 0x65, 0xd5, 0x2b, 0x18, 0x38, 0x11, 0x8e, 0xa7, 0x4e, 0x7f, 0x64, - 0xb5, 0x91, 0x56, 0x54, 0x7c, 0x35, 0x99, 0xbc, 0xa0, 0x62, 0x7b, 0xc9, 0xfc, 0x45, 0x87, 0xc6, - 0x66, 0xa2, 0x55, 0x54, 0x88, 0x4c, 0x58, 0x6b, 0x2d, 0x6e, 0xbd, 0x02, 0xe2, 0xb0, 0x2b, 0x5b, - 0x4f, 0xfc, 0x2c, 0x3f, 0x36, 0x5f, 0x41, 0x86, 0x59, 0x7e, 0xb6, 0x9d, 0x3a, 0xf4, 0x23, 0x1d, - 0xc7, 0x4d, 0xe6, 0x2d, 0x2c, 0x9e, 0x2b, 0xb7, 0x61, 0x04, 0x96, 0xb0, 0x12, 0x45, 0xcc, 0x66, - 0x91, 0x51, 0x79, 0xfa, 0x63, 0xf9, 0x02, 0x80, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x81, - 0xdb, 0x85, 0xa4, 0x35, 0xb4, 0x9a, 0x9e, 0x1a, 0x16, 0x71, 0x7c, 0xf6, 0x44, 0xf6, 0xf8, 0x6c, - 0x9c, 0x10, 0x34, 0xd0, 0xad, 0x61, 0x77, 0x2e, 0xd1, 0x67, 0xe9, 0x85, 0xf8, 0xb9, 0x13, 0xde, - 0x1e, 0x78, 0x6a, 0xf0, 0xd4, 0x8a, 0x9f, 0x61, 0xd7, 0x52, 0x31, 0x8b, 0xcc, 0xd0, 0x5b, 0xcd, - 0x15, 0x63, 0x4d, 0xda, 0xe3, 0xdf, 0x20, 0x9c, 0x07, 0x16, 0xfd, 0xc0, 0x08, 0x94, 0x5c, 0x72, - 0xca, 0x64, 0xba, 0x1d, 0xcb, 0x4d, 0x69, 0x21, 0x37, 0x65, 0x6b, 0x1c, 0x7b, 0xe4, 0xa6, 0x20, - 0x37, 0xe5, 0xb5, 0x1b, 0x86, 0xdc, 0x14, 0x91, 0x2b, 0x40, 0x6e, 0x0a, 0x38, 0x2e, 0x70, 0x5c, - 0xe0, 0xb8, 0xc0, 0x71, 0x81, 0xe3, 0xca, 0x2f, 0xad, 0xc8, 0x4d, 0xe1, 0xfa, 0x41, 0x6e, 0x8a, - 0xec, 0xfc, 0x48, 0x0f, 0x10, 0xd6, 0x5a, 0x8b, 0x5b, 0x0f, 0xb9, 0x29, 0xd8, 0x7c, 0x1a, 0x72, - 0x53, 0x4a, 0xff, 0x7d, 0x90, 0x3a, 0x01, 0x58, 0x09, 0x58, 0x09, 0x58, 0x09, 0x58, 0x09, 0x58, - 0xc9, 0x27, 0xad, 0x48, 0x9d, 0x28, 0x3a, 0x75, 0x02, 0xc1, 0x8a, 0x97, 0x75, 0xcc, 0x7e, 0x47, - 0xf6, 0x27, 0x01, 0x65, 0x54, 0x77, 0xe2, 0xdf, 0x71, 0x7b, 0x51, 0xdd, 0x49, 0xac, 0xce, 0xd0, - 0xe4, 0x9b, 0x06, 0xde, 0x78, 0x10, 0x38, 0xb1, 0xa9, 0xb9, 0x98, 0xce, 0xfd, 0xe5, 0xd3, 0xdc, - 0x95, 0x7f, 0xb9, 0x18, 0x3d, 0xb4, 0xbf, 0x9c, 0x4f, 0xae, 0xf7, 0xcb, 0x67, 0xcf, 0x1b, 0xfd, - 0x1e, 0x5e, 0xe9, 0x97, 0xe4, 0xdd, 0x7f, 0x4d, 0x2f, 0x74, 0x8f, 0x4b, 0x52, 0xf1, 0x66, 0xb1, - 0x88, 0x64, 0xaf, 0x88, 0x15, 0x9e, 0x6a, 0xa1, 0xf0, 0x54, 0x69, 0x30, 0x13, 0x0a, 0x4f, 0xed, - 0xaf, 0x39, 0x65, 0x2f, 0x3c, 0x65, 0x0c, 0x06, 0x6a, 0x14, 0xe8, 0xf7, 0xae, 0x29, 0x98, 0xe0, - 0x37, 0x3f, 0x29, 0x77, 0x9a, 0x8e, 0x60, 0xfe, 0x48, 0x25, 0xe2, 0xa0, 0x79, 0xfd, 0xcc, 0x3e, - 0xfa, 0x35, 0x94, 0x95, 0xc4, 0x43, 0x5a, 0xe4, 0xce, 0x91, 0x74, 0x48, 0x8b, 0x2c, 0x2d, 0x09, - 0x97, 0x48, 0xdb, 0x57, 0xd7, 0xb5, 0x95, 0xe1, 0x48, 0x36, 0x50, 0x6d, 0xe2, 0x8c, 0xc0, 0xaa, - 0x23, 0x61, 0x3e, 0x28, 0x2f, 0xb0, 0xfc, 0x28, 0x3b, 0x74, 0x02, 0xc2, 0x1f, 0x0c, 0x5b, 0xd0, - 0xa7, 0x58, 0x3f, 0xff, 0x2e, 0xb9, 0x17, 0xcd, 0x46, 0x03, 0xce, 0x05, 0x9c, 0x0b, 0x38, 0x17, - 0x70, 0x2e, 0xe0, 0x5c, 0xc8, 0x48, 0xdb, 0xd8, 0x72, 0x82, 0x66, 0x47, 0xd0, 0xb7, 0xe8, 0xa0, - 0x1b, 0x54, 0xf6, 0x2f, 0x86, 0x6e, 0x50, 0x92, 0x17, 0x80, 0x6e, 0x50, 0xdc, 0x5b, 0xaa, 0xdd, - 0x38, 0x43, 0x3b, 0x28, 0xb1, 0x5d, 0x85, 0x76, 0x50, 0x3b, 0x0b, 0x4e, 0x07, 0x63, 0xcf, 0x0b, - 0x61, 0xe1, 0xf4, 0x1c, 0xa3, 0x60, 0xa3, 0x85, 0xe5, 0x99, 0x01, 0xb1, 0x00, 0xb1, 0x00, 0xb1, - 0x00, 0xb1, 0x00, 0xb1, 0xd0, 0x6f, 0x17, 0x08, 0x2b, 0x95, 0x3b, 0xdc, 0x80, 0x2f, 0x0c, 0x84, - 0x45, 0xbb, 0xa5, 0xd0, 0x6f, 0x17, 0x00, 0x0b, 0x00, 0x2b, 0xff, 0xa6, 0x1a, 0x79, 0x4a, 0xdd, - 0x8f, 0x02, 0x39, 0x5c, 0x35, 0x9d, 0x70, 0x97, 0xe2, 0x7b, 0xa1, 0x5f, 0x8c, 0x00, 0x1f, 0xd0, - 0x27, 0xd0, 0x27, 0xd0, 0x27, 0xd0, 0xa7, 0x8c, 0xb4, 0x21, 0x7b, 0xa8, 0x4c, 0xfe, 0x83, 0x6e, - 0x2a, 0xdb, 0x78, 0x14, 0xf7, 0x22, 0xe2, 0x69, 0x77, 0xc9, 0x97, 0x40, 0xa6, 0x10, 0x1c, 0x09, - 0x38, 0x12, 0x70, 0x24, 0xe0, 0x48, 0x08, 0x49, 0x1b, 0x32, 0x85, 0x72, 0xff, 0x80, 0xc7, 0xe6, - 0x99, 0x17, 0x3c, 0xb6, 0xc8, 0x96, 0x2a, 0x92, 0xc7, 0x3e, 0xea, 0x34, 0xb0, 0xab, 0xc4, 0x76, - 0x15, 0x88, 0xec, 0x1d, 0x06, 0xa2, 0xd2, 0x19, 0x42, 0x52, 0x99, 0x41, 0x38, 0xaa, 0x02, 0x00, - 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xaa, 0x21, 0x8f, 0x8a, 0x40, 0x35, 0x22, 0x8f, 0x6a, 0x5b, - 0xf1, 0x27, 0x4e, 0xaa, 0x00, 0x7f, 0x12, 0x6f, 0x29, 0xf1, 0x5a, 0xe4, 0x80, 0x9f, 0x80, 0x9f, - 0x3b, 0x08, 0x3f, 0x1f, 0x2c, 0x2f, 0x18, 0x1b, 0xb6, 0x1e, 0x97, 0x1e, 0x94, 0x43, 0xa1, 0xcb, - 0x13, 0x03, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x5e, 0xc5, 0xd2, 0x66, 0x8d, 0x84, - 0x74, 0xe3, 0xbc, 0x7e, 0x6c, 0x9e, 0x09, 0xcc, 0x15, 0xdf, 0xcb, 0x9d, 0xc3, 0x58, 0xb3, 0x95, - 0x7b, 0x68, 0x0b, 0xae, 0xdd, 0xca, 0x1a, 0x9e, 0xca, 0x96, 0x68, 0x0f, 0x94, 0xe7, 0x88, 0xb7, - 0xff, 0xaa, 0x54, 0xab, 0x37, 0x0d, 0xfd, 0xac, 0xff, 0xe3, 0xa6, 0xa9, 0x9f, 0xf5, 0x27, 0x0f, - 0x9b, 0xd1, 0x9f, 0xc9, 0xe3, 0xd6, 0x4d, 0x43, 0x6f, 0x4f, 0x1f, 0x1f, 0xdf, 0x34, 0xf4, 0xe3, - 0x7e, 0xad, 0xd7, 0xab, 0xd7, 0xbe, 0x1f, 0x3d, 0xa5, 0xff, 0x60, 0xf5, 0xa7, 0x9b, 0x5e, 0x6f, - 0xf4, 0xfd, 0x8f, 0xa7, 0xf0, 0xf7, 0xc7, 0xa7, 0xfe, 0xcf, 0xb5, 0x77, 0x95, 0x5d, 0xeb, 0x8c, - 0x73, 0xb0, 0xc3, 0xd2, 0xd8, 0x81, 0x34, 0xb2, 0x4b, 0x63, 0xf7, 0x47, 0x28, 0x33, 0x86, 0x3e, - 0x3c, 0xd7, 0x7f, 0xeb, 0x7f, 0x6f, 0x1c, 0xb4, 0x9f, 0x6a, 0xdd, 0x5a, 0x75, 0xf9, 0xb5, 0x6e, - 0xed, 0x7b, 0xe3, 0xe0, 0xf8, 0xa9, 0x5a, 0x5d, 0xf3, 0x9f, 0x77, 0xeb, 0xc6, 0xa8, 0xfd, 0xa8, - 0x56, 0xab, 0xb1, 0x1c, 0x2e, 0xc8, 0xe6, 0x4d, 0xa3, 0xd9, 0x7f, 0x17, 0x3d, 0x9c, 0xfc, 0x4e, - 0xa4, 0x7b, 0xa3, 0x37, 0xd7, 0xd6, 0xca, 0xf4, 0x81, 0xb8, 0x0a, 0xfb, 0x77, 0xb7, 0xff, 0x73, - 0xb7, 0xf6, 0xbd, 0xf3, 0x34, 0x7d, 0x1c, 0xfd, 0xae, 0xfd, 0xa8, 0xd6, 0xdf, 0xf6, 0x7a, 0xf5, - 0xfa, 0xdb, 0xda, 0xe4, 0x06, 0xc4, 0xef, 0x7b, 0x3b, 0xf9, 0xef, 0xbb, 0x6e, 0x77, 0xe5, 0xa5, - 0x5a, 0xf5, 0xa7, 0xfa, 0x2e, 0xaa, 0xa5, 0x6d, 0x27, 0x05, 0x98, 0xdd, 0xd2, 0x8f, 0x96, 0x1f, - 0x9c, 0x07, 0x81, 0x50, 0x67, 0xf0, 0x4b, 0xcb, 0xf9, 0x60, 0x47, 0xf5, 0x0e, 0x85, 0xf8, 0xaf, - 0xca, 0xa5, 0xf1, 0x6d, 0x6e, 0xc6, 0xe6, 0x69, 0xbb, 0xdd, 0x39, 0x69, 0xb7, 0x1b, 0x27, 0x47, - 0x27, 0x8d, 0xb3, 0xe3, 0xe3, 0x66, 0xa7, 0x29, 0x11, 0x14, 0xf8, 0xd3, 0x33, 0x95, 0xa7, 0xcc, - 0x5f, 0x1e, 0x2b, 0x5d, 0xcd, 0x19, 0xdb, 0x36, 0x68, 0xa4, 0x67, 0x69, 0x24, 0xcf, 0x1d, 0x07, - 0xca, 0xd3, 0x2d, 0x53, 0x9e, 0x48, 0x9a, 0x4d, 0x0d, 0x2a, 0x09, 0x54, 0x12, 0xa8, 0x24, 0x50, - 0x49, 0xa0, 0x92, 0x10, 0xa9, 0xdf, 0x3e, 0xdc, 0x8a, 0x48, 0xbd, 0xe4, 0x05, 0x20, 0x52, 0xcf, - 0xbd, 0xa5, 0x50, 0xf1, 0x04, 0x91, 0xfa, 0x92, 0x81, 0x72, 0xf4, 0x7a, 0xd2, 0xf6, 0xa5, 0x75, - 0x22, 0x63, 0x27, 0xce, 0xed, 0x68, 0x42, 0x28, 0x87, 0xcc, 0xc5, 0x11, 0x39, 0x33, 0x12, 0x67, - 0x47, 0xe0, 0x68, 0x4e, 0xb8, 0x0d, 0x08, 0x1b, 0xcd, 0x09, 0x4b, 0x63, 0xb0, 0xd8, 0x91, 0xb3, - 0x60, 0x83, 0x75, 0x89, 0x86, 0xea, 0x49, 0x03, 0xf5, 0x7a, 0xfd, 0x70, 0x62, 0x71, 0x0f, 0x57, - 0x75, 0xf3, 0xb6, 0xd8, 0xc6, 0x37, 0x25, 0xde, 0xa1, 0xa1, 0x52, 0x92, 0xb0, 0x7c, 0xbc, 0xf1, - 0x1e, 0xfe, 0xf8, 0x4e, 0x21, 0xf1, 0x1c, 0xde, 0xf8, 0x0d, 0xf5, 0x4e, 0x62, 0x76, 0xca, 0x8b, - 0x74, 0xc6, 0x2b, 0x2c, 0x3d, 0xb6, 0x33, 0x37, 0x2b, 0xa7, 0xd5, 0x7c, 0x74, 0xfa, 0x89, 0x66, - 0x24, 0xa2, 0x7d, 0x59, 0x51, 0xdf, 0x02, 0xcf, 0xd0, 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0x5a, - 0xeb, 0x5b, 0xf1, 0xd4, 0x50, 0x79, 0xca, 0x19, 0xd0, 0xf3, 0xb8, 0x0c, 0x82, 0x33, 0x75, 0x0d, - 0xae, 0x7f, 0xfb, 0x55, 0x3b, 0x3e, 0x39, 0x3b, 0xd5, 0x74, 0xed, 0xf3, 0x44, 0xdd, 0x6b, 0xd7, - 0x91, 0xba, 0xd7, 0xae, 0x95, 0x39, 0x76, 0x4c, 0xc3, 0x19, 0x3c, 0x6a, 0x57, 0x9e, 0x1b, 0xb8, - 0x03, 0xd7, 0xee, 0x39, 0xd5, 0xcf, 0xd7, 0xd7, 0x57, 0x35, 0xed, 0xb3, 0xf2, 0x7c, 0xcb, 0x75, - 0xb4, 0x23, 0x6d, 0xe8, 0x7a, 0xda, 0xc5, 0xd5, 0x43, 0x5b, 0x33, 0x1c, 0x33, 0x7c, 0xc0, 0x51, - 0xc2, 0x85, 0xdb, 0x19, 0x9f, 0x77, 0xc2, 0x67, 0x8b, 0xc8, 0xe4, 0xf5, 0x49, 0xf9, 0xdf, 0x0b, - 0x7e, 0x37, 0xfd, 0x2a, 0x97, 0xdd, 0x23, 0x7a, 0x53, 0x2e, 0xf2, 0x8e, 0x4a, 0x7f, 0x31, 0xd9, - 0x53, 0x71, 0x3b, 0x4a, 0xb3, 0x7f, 0xf2, 0xaf, 0x72, 0xbe, 0x11, 0x72, 0xae, 0xea, 0xd4, 0xcf, - 0xce, 0xcd, 0x64, 0xd0, 0x3a, 0xd2, 0xf4, 0x8e, 0xb3, 0x88, 0xa3, 0x4c, 0xeb, 0x18, 0xe7, 0x5d, - 0xda, 0xf3, 0xf1, 0x6d, 0xf8, 0x75, 0x95, 0x49, 0xe2, 0x0c, 0xd0, 0x48, 0x7a, 0x62, 0xf4, 0x0f, - 0xdd, 0x81, 0x6e, 0x0d, 0xbb, 0x73, 0x72, 0xbb, 0xf4, 0x42, 0xfc, 0x7c, 0x51, 0xb6, 0x57, 0x5f, - 0x8b, 0x5e, 0x1a, 0x75, 0x23, 0x39, 0x9f, 0x3c, 0x9c, 0x49, 0xfb, 0xc2, 0x73, 0x22, 0x63, 0x5a, - 0x79, 0xaf, 0xfc, 0x81, 0x67, 0x8d, 0x62, 0xfd, 0x57, 0x39, 0x37, 0x4d, 0x2b, 0x7c, 0x6c, 0xd8, - 0xda, 0xc5, 0x95, 0x16, 0xce, 0xa5, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0xca, 0x6b, 0xec, - 0x45, 0xaa, 0x32, 0x34, 0x5f, 0x3d, 0x67, 0xf6, 0x4d, 0xa8, 0xae, 0x66, 0xca, 0x79, 0x10, 0x0d, - 0x47, 0x4d, 0xd0, 0x72, 0x10, 0xb2, 0x6c, 0x04, 0x2c, 0x97, 0x8f, 0xc7, 0x4e, 0xb0, 0xb2, 0x3b, - 0x74, 0x9c, 0x04, 0x6a, 0xb9, 0xc0, 0xd9, 0x7b, 0x8b, 0x96, 0x09, 0xaa, 0x44, 0x9e, 0x06, 0xf9, - 0x8e, 0x4a, 0x02, 0x43, 0xe1, 0xe8, 0xc4, 0x6b, 0xbd, 0xa4, 0xe0, 0x3e, 0x38, 0x03, 0xdb, 0xf5, - 0x2d, 0xe7, 0x36, 0x54, 0x68, 0x81, 0x61, 0x39, 0xca, 0x8b, 0x7c, 0xf1, 0xd0, 0x3f, 0xd7, 0x22, - 0x16, 0xc2, 0xd7, 0xee, 0x0c, 0xc7, 0xb4, 0x95, 0xa9, 0x7d, 0x7d, 0xd4, 0x82, 0x3b, 0xcb, 0xef, - 0x39, 0x17, 0x57, 0x5a, 0xa2, 0xeb, 0xa8, 0xaf, 0x8f, 0x56, 0xe5, 0xb1, 0xa9, 0x3e, 0x4e, 0x15, - 0xc8, 0xae, 0x0a, 0x8b, 0x80, 0xbd, 0xac, 0xb1, 0xa7, 0x62, 0x30, 0x2f, 0x53, 0xac, 0xa9, 0xdc, - 0xcc, 0x3d, 0x23, 0xbf, 0x25, 0xc0, 0x73, 0xf1, 0xf1, 0x5d, 0x5b, 0xc9, 0x7b, 0x49, 0x29, 0x82, - 0x22, 0x78, 0x30, 0x71, 0xdd, 0xb0, 0xad, 0xbc, 0x18, 0x8f, 0xde, 0xe1, 0x1b, 0xb5, 0xbf, 0xdb, - 0x71, 0x88, 0x82, 0x19, 0xa7, 0x7e, 0x5e, 0x5a, 0x82, 0x96, 0x3f, 0x94, 0xe4, 0x0d, 0x09, 0x14, - 0x51, 0xfa, 0xf8, 0x5a, 0x3e, 0x79, 0xce, 0xbe, 0xd6, 0xd9, 0x3e, 0x99, 0xd1, 0x9b, 0xa0, 0xda, - 0x15, 0x12, 0xbb, 0x21, 0xdb, 0x82, 0xa4, 0xbf, 0x9d, 0x19, 0x6e, 0x65, 0x65, 0x30, 0x45, 0x31, - 0xd9, 0x6e, 0xe1, 0xac, 0xe9, 0xf9, 0x64, 0x9c, 0x8c, 0x8b, 0x99, 0x0f, 0xa2, 0xe5, 0x86, 0x62, - 0x14, 0x90, 0x8b, 0x0c, 0x5a, 0x51, 0x79, 0x4e, 0xe4, 0x50, 0x89, 0xdc, 0xed, 0xa1, 0x84, 0x3e, - 0xb2, 0xca, 0x27, 0x2f, 0xeb, 0x53, 0x51, 0x4e, 0x88, 0x75, 0xf2, 0x67, 0x02, 0x27, 0xbb, 0x6e, - 0x3a, 0x60, 0xce, 0x15, 0xa1, 0xac, 0x18, 0x4e, 0xd0, 0xdc, 0x32, 0xaf, 0xeb, 0x40, 0x93, 0x9e, - 0x4c, 0x46, 0xf5, 0x50, 0x52, 0x3b, 0xe4, 0x54, 0x0e, 0x35, 0x62, 0x63, 0xa3, 0x6a, 0xd8, 0xe0, - 0x17, 0x07, 0x15, 0x53, 0x6c, 0xb0, 0x96, 0x2c, 0x5d, 0x97, 0xa1, 0x79, 0x22, 0x51, 0x73, 0xc4, - 0xa7, 0x92, 0xa1, 0x8b, 0xc7, 0x5b, 0x37, 0xd0, 0xdd, 0x81, 0x3e, 0x70, 0xef, 0x47, 0x91, 0xfb, - 0x67, 0xea, 0xb6, 0x32, 0x86, 0xe1, 0xe0, 0x4f, 0x45, 0x39, 0xe6, 0x39, 0x9c, 0x91, 0xfb, 0x60, - 0x4c, 0x67, 0xa4, 0xc2, 0xc1, 0xa0, 0xd1, 0xa1, 0xd1, 0xa1, 0xd1, 0x4b, 0xa4, 0xd1, 0xc9, 0xba, - 0xd8, 0x11, 0x76, 0xa9, 0x23, 0xae, 0x2d, 0x40, 0x18, 0x9e, 0xe5, 0xa8, 0x0d, 0x90, 0x1c, 0xd4, - 0xee, 0x10, 0x57, 0xaa, 0x63, 0x3f, 0x87, 0xcd, 0x77, 0xce, 0x9a, 0x30, 0xc8, 0xc4, 0x72, 0xf8, - 0x7e, 0xb6, 0x66, 0xc7, 0xc7, 0x47, 0xc7, 0x58, 0x36, 0x12, 0xe5, 0x48, 0x37, 0x4a, 0xbf, 0x50, - 0x25, 0xcd, 0x10, 0xd1, 0x64, 0x88, 0x60, 0x32, 0x64, 0x58, 0x5d, 0xff, 0xf6, 0xab, 0x76, 0x72, - 0xd6, 0xec, 0x6a, 0x11, 0x4d, 0xed, 0xa8, 0x20, 0x09, 0x44, 0x6d, 0x59, 0xda, 0x15, 0x57, 0x28, - 0x51, 0x36, 0xf3, 0xea, 0x85, 0xe5, 0x80, 0xc4, 0x03, 0x45, 0x4a, 0x7c, 0x72, 0x77, 0xc3, 0x3b, - 0x71, 0xc4, 0xa3, 0xc4, 0xb1, 0x1d, 0x47, 0x59, 0xb7, 0x77, 0x5f, 0x5d, 0xcf, 0xcf, 0x1f, 0xde, - 0x99, 0x0d, 0x85, 0x08, 0x0f, 0x22, 0x3c, 0x85, 0xe0, 0xef, 0x2d, 0x8b, 0xf0, 0x4c, 0x25, 0x86, - 0x8e, 0x3d, 0x4b, 0x46, 0xa4, 0xa1, 0xd0, 0x9a, 0xa0, 0xd0, 0x40, 0xa1, 0xed, 0x23, 0x85, 0x46, - 0x95, 0xb2, 0x9f, 0x37, 0x77, 0xe2, 0xd9, 0xcd, 0x9b, 0x2b, 0x97, 0x82, 0x49, 0xdc, 0xc9, 0xc5, - 0x9e, 0x43, 0xfc, 0xd9, 0xd4, 0x80, 0x24, 0xf4, 0xc4, 0x89, 0x1f, 0x26, 0x88, 0x59, 0xd6, 0x13, - 0x3f, 0x16, 0xe3, 0x79, 0x1f, 0xf2, 0x43, 0x1e, 0x4c, 0x15, 0xdf, 0x70, 0x9a, 0x46, 0x52, 0xdd, - 0x88, 0xa9, 0x1d, 0x31, 0xf5, 0x23, 0xa1, 0x86, 0x68, 0xd5, 0x11, 0xb1, 0x5a, 0x4a, 0x6e, 0x00, - 0x5b, 0x85, 0xb6, 0xb5, 0xcd, 0xd5, 0x74, 0xc7, 0xd5, 0xff, 0xeb, 0x3a, 0x1c, 0x27, 0x2e, 0x38, - 0xdb, 0x37, 0xb1, 0xb7, 0x69, 0x2a, 0xbc, 0x39, 0x1a, 0x93, 0x78, 0x85, 0x13, 0xf7, 0x7a, 0xf5, - 0xfe, 0xdb, 0x4a, 0xd9, 0x0f, 0x61, 0x6c, 0x59, 0x51, 0x30, 0x36, 0xc2, 0x97, 0x4f, 0x7b, 0x51, - 0x86, 0x68, 0x6d, 0xcb, 0xf9, 0x5b, 0xb7, 0x8d, 0x47, 0xe5, 0xb1, 0xf5, 0x41, 0x9e, 0x55, 0x96, - 0x5c, 0x9d, 0x0b, 0x3e, 0x12, 0x7c, 0x24, 0xf8, 0x48, 0x7b, 0xe3, 0x23, 0x5d, 0x1a, 0x8e, 0x69, - 0x04, 0xae, 0xf7, 0xc8, 0x50, 0x16, 0x80, 0xdf, 0xff, 0x1a, 0xdd, 0x3d, 0xfa, 0x8c, 0xed, 0x34, - 0xb7, 0xdc, 0xef, 0x9a, 0xef, 0x5f, 0xd9, 0x7a, 0xaa, 0x76, 0x17, 0x9f, 0xd7, 0xde, 0x72, 0x74, - 0x68, 0x84, 0xeb, 0xb2, 0x6d, 0xae, 0x0b, 0x0a, 0xe4, 0xe5, 0x8a, 0x7d, 0x27, 0xe1, 0xe0, 0xe4, - 0x51, 0xae, 0x70, 0x38, 0xfd, 0xf2, 0x10, 0x2c, 0x0d, 0x25, 0x2f, 0x47, 0xcf, 0xc7, 0x11, 0xfb, - 0x98, 0xa0, 0xf5, 0x41, 0xeb, 0x4b, 0xfb, 0x8a, 0xe5, 0x52, 0xc2, 0xe4, 0x7e, 0x1b, 0x63, 0x27, - 0x03, 0x8e, 0xce, 0x05, 0xf3, 0x9d, 0x0a, 0x26, 0x75, 0x10, 0xe3, 0x7e, 0x05, 0xd3, 0x7a, 0x89, - 0xbb, 0xa4, 0xda, 0x27, 0x3d, 0x89, 0xc8, 0xb5, 0xfb, 0x64, 0xd8, 0x92, 0xc7, 0x6d, 0x5b, 0x50, - 0xf0, 0x50, 0xf0, 0x7b, 0xa8, 0xe0, 0x11, 0xb7, 0x05, 0x27, 0xc9, 0xac, 0x66, 0xb8, 0xd5, 0x8d, - 0x98, 0xda, 0x11, 0x53, 0x3f, 0x12, 0x6a, 0x88, 0x9e, 0x3e, 0xd0, 0x10, 0xb7, 0xdd, 0xc0, 0x71, - 0x41, 0xdc, 0x16, 0x71, 0xdb, 0x22, 0x39, 0x3e, 0x84, 0x27, 0xe1, 0x0a, 0xc0, 0x15, 0x80, 0x2b, - 0xb0, 0x75, 0xae, 0x00, 0xc2, 0x93, 0xbb, 0xeb, 0x5e, 0xec, 0x40, 0x78, 0xb2, 0x94, 0x16, 0xda, - 0xf5, 0xac, 0x5b, 0x8e, 0xd2, 0x1c, 0x89, 0x7d, 0x98, 0x8c, 0x0f, 0x4b, 0x0c, 0x4b, 0x0c, 0x4b, - 0x0c, 0x50, 0x4e, 0xb6, 0xdb, 0xa7, 0xf1, 0x73, 0x9d, 0x45, 0xc1, 0x2c, 0x18, 0xcc, 0x36, 0xc3, - 0xd8, 0x1f, 0x9c, 0xf1, 0x3d, 0x12, 0x3d, 0x36, 0x96, 0xa7, 0x5d, 0x48, 0xf4, 0x98, 0x04, 0xb9, - 0xd0, 0x0b, 0x11, 0xbd, 0x10, 0x77, 0xb9, 0x17, 0xe2, 0x5e, 0x97, 0x70, 0x3a, 0x6d, 0x75, 0xba, - 0xda, 0xb9, 0xa3, 0x7d, 0x08, 0xee, 0x26, 0x65, 0x83, 0xe2, 0xce, 0x02, 0xda, 0xb5, 0xf2, 0x5d, - 0x7b, 0x1c, 0xf5, 0x27, 0x44, 0x61, 0x27, 0x59, 0xa7, 0x6c, 0xa5, 0xb0, 0x53, 0xaa, 0x45, 0x42, - 0xb9, 0x27, 0x52, 0xed, 0xb0, 0x3d, 0x2d, 0x49, 0x56, 0x0d, 0xb8, 0x6c, 0x4f, 0x92, 0x3f, 0xa6, - 0xb3, 0xa2, 0x6a, 0x55, 0xb9, 0xf6, 0x43, 0x99, 0x0b, 0x57, 0xe5, 0x4b, 0xcf, 0x22, 0x49, 0xc7, - 0x22, 0x2b, 0x58, 0xd5, 0x42, 0xc1, 0x2a, 0x3e, 0x8a, 0x04, 0x05, 0xab, 0x92, 0x0b, 0x47, 0x4b, - 0x92, 0x4d, 0x06, 0x43, 0x4b, 0x12, 0x06, 0x3d, 0x43, 0xae, 0x6f, 0xb8, 0x00, 0x01, 0xaa, 0x6f, - 0x69, 0x68, 0x49, 0xb2, 0x89, 0xd1, 0x6f, 0xa2, 0x53, 0x07, 0x3a, 0x75, 0x40, 0xd1, 0x41, 0xd1, - 0x95, 0x4a, 0xd1, 0xa1, 0x53, 0x47, 0x9a, 0x0b, 0x43, 0xa7, 0x8e, 0xc5, 0x4d, 0x84, 0x4e, 0x1d, - 0xe8, 0xd4, 0x41, 0xa6, 0x1c, 0xe9, 0x46, 0x41, 0xa7, 0x0e, 0x51, 0xad, 0x88, 0x4e, 0x1d, 0x45, - 0x7b, 0x3a, 0x6b, 0x3d, 0x1e, 0x74, 0xea, 0x10, 0x00, 0x57, 0x08, 0x05, 0x2c, 0x84, 0x02, 0x72, - 0x24, 0x72, 0xc8, 0x84, 0x01, 0xc6, 0x8e, 0x33, 0xbe, 0xff, 0xaa, 0xbc, 0x1c, 0xa4, 0xe4, 0xcc, - 0x77, 0x9e, 0x8d, 0x85, 0x0e, 0x16, 0x11, 0xc0, 0x1a, 0x22, 0x20, 0x90, 0x05, 0x97, 0x0e, 0xf7, - 0x26, 0x20, 0x40, 0x54, 0xde, 0x9e, 0xb6, 0xac, 0xfd, 0xde, 0x74, 0xaf, 0x18, 0x82, 0x56, 0xe2, - 0xa0, 0x95, 0x86, 0xe8, 0x5e, 0x31, 0x85, 0x3e, 0x44, 0xf1, 0xbe, 0x95, 0xdd, 0x4b, 0x13, 0xf7, - 0x9b, 0x7d, 0x61, 0xc2, 0xf8, 0x5f, 0x32, 0x68, 0x84, 0xa5, 0x69, 0x5c, 0xeb, 0x3e, 0x0a, 0x7a, - 0x95, 0x46, 0xe1, 0x49, 0x02, 0xcf, 0x1d, 0xa9, 0xf7, 0x32, 0x44, 0x41, 0xaf, 0xb4, 0xbb, 0x95, - 0x2e, 0xe0, 0xb8, 0xe2, 0xd5, 0x34, 0xf7, 0xe2, 0xbc, 0x02, 0x7b, 0xc5, 0xd0, 0x6d, 0x3f, 0x58, - 0xb0, 0x3d, 0xf9, 0xa5, 0x33, 0x5c, 0x4d, 0x52, 0x01, 0xb4, 0x98, 0xd0, 0x79, 0xf2, 0x9d, 0x74, - 0x4f, 0x0d, 0xe9, 0x00, 0xcf, 0xe2, 0xb0, 0xc0, 0x3d, 0xc0, 0x3d, 0xc0, 0x3d, 0xc5, 0xe3, 0x1e, - 0x74, 0xed, 0x03, 0x1a, 0x00, 0x1a, 0xd8, 0x37, 0x34, 0x40, 0x5f, 0xfd, 0x71, 0x6a, 0xdc, 0x19, - 0x8b, 0x40, 0x26, 0x53, 0xa0, 0xec, 0x84, 0x48, 0xd9, 0x89, 0x21, 0xca, 0x4e, 0x14, 0xa8, 0x8c, - 0x24, 0x94, 0x12, 0xad, 0x72, 0x22, 0x56, 0x52, 0x7c, 0xd4, 0xc5, 0xca, 0x6e, 0xa7, 0xaf, 0x49, - 0xbe, 0xe2, 0xb9, 0x9c, 0xf0, 0xd4, 0x67, 0x8a, 0x11, 0x6c, 0xb8, 0x2d, 0xba, 0x73, 0xc8, 0x74, - 0xe9, 0x85, 0xf8, 0x79, 0x74, 0x42, 0x11, 0xcd, 0x59, 0xf6, 0xb7, 0xaf, 0xdc, 0x3c, 0x61, 0xc1, - 0x67, 0xa8, 0x17, 0x66, 0x81, 0xad, 0x86, 0xad, 0x86, 0xad, 0x86, 0xad, 0x86, 0xad, 0xde, 0xd0, - 0x56, 0xdf, 0xcc, 0x6c, 0xf5, 0x3f, 0x06, 0x63, 0xcf, 0x53, 0x4e, 0x50, 0xad, 0x1d, 0xd6, 0xeb, - 0x33, 0x16, 0xba, 0x1f, 0x7f, 0x64, 0x91, 0x8c, 0x5e, 0x7d, 0x2d, 0x19, 0xd9, 0x54, 0xdf, 0x60, - 0xf6, 0xd1, 0x93, 0xad, 0x7c, 0x0b, 0x24, 0x13, 0x89, 0x59, 0x08, 0x3c, 0xec, 0x60, 0x67, 0x36, - 0xb4, 0xef, 0x29, 0xa5, 0x9f, 0x06, 0x02, 0x57, 0xdc, 0x0f, 0x03, 0x81, 0x9b, 0x79, 0x40, 0x10, - 0xb8, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x65, 0x04, 0x85, 0x7c, 0x04, 0x2e, 0x78, - 0x4a, 0x98, 0x24, 0x98, 0x24, 0x98, 0x24, 0x98, 0x24, 0x98, 0xa4, 0xdd, 0xe3, 0x29, 0x41, 0xc7, - 0x95, 0x9d, 0x8e, 0x43, 0xfd, 0x7c, 0xae, 0x55, 0x2d, 0x60, 0x35, 0x65, 0x8b, 0x29, 0xff, 0x33, - 0xb9, 0x8a, 0x2f, 0xc9, 0xdb, 0xae, 0xd5, 0x70, 0x1b, 0x53, 0xee, 0x69, 0x28, 0x5c, 0x52, 0xea, - 0x96, 0x3c, 0xc5, 0xbe, 0x85, 0x14, 0xfb, 0xe2, 0x5d, 0x4e, 0xa4, 0xd8, 0x6f, 0xfc, 0x85, 0x70, - 0xb4, 0x98, 0x62, 0x50, 0x1c, 0x2d, 0x2e, 0x03, 0x16, 0x47, 0x2c, 0x4a, 0x1c, 0x6b, 0xe3, 0x68, - 0x71, 0xfe, 0xdd, 0x5a, 0xfe, 0xa3, 0xc5, 0x80, 0x1c, 0xf2, 0x90, 0x83, 0x00, 0x32, 0xa2, 0x6c, - 0x1a, 0xfd, 0xba, 0x54, 0x72, 0xe1, 0x9f, 0xf4, 0xa0, 0x4f, 0xac, 0x56, 0xdb, 0x1b, 0xc6, 0x95, - 0xce, 0xbb, 0xc2, 0x7c, 0x2b, 0x5b, 0xc9, 0xd4, 0xa9, 0x66, 0xc3, 0x65, 0x4c, 0xb7, 0x76, 0x9b, - 0xaf, 0x40, 0x8a, 0xbb, 0x5f, 0xb1, 0x46, 0x0f, 0x9d, 0xd4, 0xf7, 0x7c, 0x96, 0xcc, 0x10, 0x7e, - 0x3a, 0xe5, 0x5a, 0x67, 0x43, 0xd4, 0x99, 0x1d, 0xcc, 0x3c, 0x8e, 0x64, 0xee, 0x9a, 0xee, 0x79, - 0x1d, 0x43, 0x32, 0x07, 0x90, 0xcc, 0xd1, 0xa3, 0xa8, 0xc9, 0xce, 0xab, 0x4b, 0xb2, 0x22, 0xd6, - 0x4a, 0xdc, 0x9f, 0x5e, 0xf9, 0xf9, 0x2b, 0x4b, 0xce, 0x86, 0x42, 0x61, 0x49, 0x74, 0x9a, 0x12, - 0x15, 0xae, 0x62, 0x5c, 0xb4, 0xdc, 0x85, 0x25, 0x63, 0x89, 0xa1, 0x63, 0x7f, 0xa7, 0x03, 0xa2, - 0xc4, 0x0a, 0xbb, 0x80, 0x72, 0xd1, 0x20, 0xe8, 0x58, 0xa2, 0xa1, 0xc4, 0xca, 0x6b, 0x9b, 0x17, - 0x25, 0x56, 0xca, 0xa6, 0x06, 0xc0, 0x8a, 0x16, 0xa1, 0x26, 0xca, 0xc9, 0x8a, 0xd2, 0x67, 0xe8, - 0x8f, 0x18, 0x53, 0xf3, 0x47, 0x48, 0x80, 0x94, 0x49, 0x80, 0x1c, 0x21, 0x01, 0xb2, 0x40, 0xf5, - 0x23, 0xa1, 0x86, 0x68, 0xd5, 0x11, 0xb1, 0x5a, 0x4a, 0x6e, 0x00, 0x7f, 0x02, 0xa4, 0x35, 0x7a, - 0xe8, 0xe8, 0x31, 0x16, 0xd1, 0x1d, 0x57, 0xff, 0xaf, 0xeb, 0x28, 0xce, 0x6c, 0xc8, 0x53, 0x9e, - 0x6c, 0xc8, 0x40, 0x79, 0x0e, 0x69, 0x48, 0x7c, 0x61, 0x82, 0x6a, 0xb5, 0xfb, 0xe3, 0xa6, 0xa1, - 0x9f, 0x19, 0xfa, 0xf0, 0x5c, 0xff, 0xad, 0xff, 0xbd, 0x71, 0xd0, 0x7e, 0xaa, 0x75, 0x6b, 0xd5, - 0xe5, 0xd7, 0xba, 0xb5, 0xef, 0x8d, 0x83, 0xe3, 0xa7, 0x6a, 0x75, 0xcd, 0x7f, 0xde, 0xad, 0x1b, - 0xa3, 0xf6, 0xa3, 0x5a, 0xad, 0xb6, 0x8e, 0x6f, 0x1a, 0xfa, 0x71, 0xff, 0x47, 0xeb, 0xa6, 0xa1, - 0xb7, 0xfb, 0xe1, 0x7b, 0xfa, 0x3f, 0x6e, 0x1a, 0xcd, 0xfe, 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0xad, - 0xd7, 0xab, 0xd7, 0xbe, 0x1f, 0x3d, 0x6d, 0xf6, 0xe6, 0x5a, 0xad, 0xfa, 0xd3, 0x4d, 0xaf, 0x37, - 0xfa, 0xfe, 0xc7, 0x53, 0xf8, 0xfb, 0xe3, 0x53, 0xff, 0xe7, 0xda, 0x3b, 0x2e, 0x6d, 0x50, 0xad, - 0xde, 0xfc, 0xbb, 0xdb, 0xff, 0xb9, 0x5b, 0xfb, 0xde, 0x79, 0x9a, 0x3e, 0x8e, 0x7e, 0xd7, 0x7e, - 0x54, 0xeb, 0x6f, 0x7b, 0xbd, 0x7a, 0xfd, 0x6d, 0x6d, 0xf2, 0x45, 0xe3, 0xf7, 0xbd, 0x9d, 0xfc, - 0xf7, 0x5d, 0xb7, 0xbb, 0xf2, 0x52, 0xad, 0xfa, 0x53, 0x9d, 0xf1, 0x52, 0x67, 0xf7, 0xbf, 0xdb, - 0xeb, 0xd5, 0xfb, 0x6f, 0xe9, 0xd5, 0x49, 0x1f, 0x27, 0xf8, 0xf7, 0xb7, 0x70, 0xcf, 0xc4, 0xea, - 0xea, 0xb6, 0x72, 0x6e, 0xa3, 0x40, 0x0f, 0x93, 0x1b, 0xb8, 0x38, 0x0d, 0x3c, 0x42, 0x78, 0x84, - 0xf0, 0x08, 0xf7, 0xc6, 0x23, 0xbc, 0x34, 0x1c, 0xd3, 0x08, 0x5c, 0xef, 0x91, 0x8e, 0x05, 0x12, - 0xf4, 0x36, 0xc7, 0x96, 0x13, 0x9c, 0x32, 0xba, 0x97, 0xc7, 0x0c, 0x43, 0xd3, 0x36, 0x0b, 0x5e, - 0xfe, 0xe1, 0x91, 0x7c, 0x8d, 0xab, 0x99, 0xf0, 0xca, 0x24, 0xd3, 0x46, 0xb5, 0x8d, 0x03, 0xde, - 0x79, 0xb8, 0x9b, 0xd6, 0xae, 0x6e, 0x59, 0xae, 0x26, 0xb6, 0xcc, 0x1a, 0x62, 0x49, 0x5b, 0x7c, - 0x93, 0xdb, 0x02, 0xcd, 0xd6, 0x29, 0x36, 0x41, 0x29, 0x8c, 0x0e, 0xdf, 0xa8, 0xc0, 0x37, 0xa8, - 0x50, 0x56, 0xbe, 0x05, 0x62, 0xcb, 0xaf, 0xeb, 0x1c, 0x26, 0x99, 0x32, 0xd3, 0x47, 0x3b, 0x58, - 0x9a, 0x8c, 0x30, 0x66, 0x41, 0x1f, 0xab, 0xd8, 0xfb, 0x83, 0x20, 0x08, 0x79, 0x22, 0xe4, 0xa9, - 0x6d, 0xc5, 0x41, 0x10, 0xfa, 0x62, 0x0a, 0x1c, 0x45, 0x14, 0x92, 0xe2, 0x09, 0xf5, 0x7a, 0x54, - 0xd3, 0x60, 0xd4, 0x9d, 0x68, 0xf4, 0xf8, 0x09, 0xd5, 0xc2, 0xa3, 0xea, 0x64, 0xda, 0x35, 0xde, - 0xd7, 0xaa, 0x93, 0x50, 0xf0, 0x50, 0xf0, 0x1a, 0x72, 0x5a, 0x88, 0x4d, 0x06, 0x22, 0x18, 0x88, - 0x60, 0x94, 0x48, 0xfd, 0x48, 0xa8, 0x21, 0x1e, 0xda, 0x07, 0x39, 0x2d, 0xaf, 0x39, 0x2e, 0xc8, - 0x69, 0x41, 0x4e, 0x0b, 0x72, 0x5a, 0xe4, 0xa9, 0x4d, 0x42, 0xb7, 0xd9, 0xf5, 0xac, 0x5b, 0x86, - 0x70, 0xd9, 0xcc, 0x00, 0x4f, 0xc6, 0x87, 0xab, 0x03, 0x57, 0x07, 0xae, 0x0e, 0x5c, 0x1d, 0x42, - 0x57, 0x27, 0x71, 0x74, 0x58, 0x54, 0xcc, 0x82, 0x9f, 0xd3, 0x66, 0x18, 0xfb, 0x83, 0x33, 0xbe, - 0x47, 0x7e, 0x20, 0xe9, 0x9e, 0x40, 0x7e, 0x20, 0x4c, 0x0e, 0x4c, 0x0e, 0xf2, 0x03, 0x91, 0x1f, - 0xb8, 0xa2, 0xb6, 0x90, 0x1f, 0x38, 0xbf, 0x55, 0x90, 0x1f, 0x98, 0x67, 0xcb, 0x22, 0x3f, 0x30, - 0xe5, 0x16, 0x40, 0x7e, 0x60, 0x59, 0x8c, 0x0e, 0xdf, 0xa8, 0xfb, 0xc0, 0x15, 0xf9, 0x81, 0x11, - 0x8c, 0x7d, 0xc6, 0x8e, 0x37, 0x93, 0xf1, 0xe1, 0xb8, 0xc3, 0x71, 0x87, 0xe3, 0x0e, 0xae, 0x88, - 0x6c, 0xb7, 0x2b, 0x67, 0x7c, 0xaf, 0xbc, 0x49, 0xf6, 0x2d, 0x58, 0x22, 0x86, 0x25, 0x54, 0xdf, - 0x02, 0xcf, 0xd0, 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0xa6, 0xc5, 0xf4, 0xd4, 0x50, 0x79, 0xca, - 0x19, 0x6c, 0x25, 0xe2, 0x98, 0xee, 0xc4, 0xeb, 0xdf, 0x7e, 0xd5, 0xda, 0xad, 0xb3, 0xa3, 0xae, - 0x76, 0x69, 0x38, 0xc6, 0xad, 0x0a, 0x05, 0x5f, 0xbb, 0x70, 0x86, 0xae, 0x77, 0x1f, 0x6d, 0x4f, - 0xed, 0x17, 0xc3, 0x57, 0xda, 0xd0, 0xf5, 0xb4, 0xe0, 0x4e, 0xf5, 0x9c, 0xb9, 0x21, 0xa2, 0x6a, - 0xa5, 0x8e, 0x0a, 0xb4, 0x2b, 0xcf, 0x0d, 0xdc, 0x81, 0x6b, 0x6b, 0xd5, 0x8b, 0xab, 0xda, 0xc2, - 0x5b, 0x74, 0xed, 0x62, 0x74, 0x3e, 0xe1, 0x44, 0x3f, 0x45, 0x96, 0xf4, 0xaf, 0x5f, 0x7b, 0x8e, - 0x16, 0x4d, 0x79, 0xda, 0x69, 0x75, 0xb5, 0x8b, 0xab, 0x87, 0x8e, 0x16, 0xfe, 0x47, 0xd9, 0xca, - 0xf7, 0xb5, 0xf8, 0xad, 0xda, 0xf9, 0x38, 0x1c, 0x2f, 0x34, 0x66, 0x63, 0x36, 0x19, 0x91, 0xb2, - 0x0f, 0xeb, 0xec, 0xc4, 0x6c, 0xe3, 0x30, 0xfb, 0xc4, 0x52, 0x26, 0x63, 0xad, 0xe9, 0xd8, 0x8e, - 0x9d, 0x05, 0x98, 0x80, 0xd3, 0x32, 0x9b, 0x6c, 0xec, 0x1d, 0x38, 0x2d, 0x53, 0xae, 0xce, 0x61, - 0x04, 0x19, 0xd5, 0x0f, 0x9e, 0xc7, 0x70, 0x5c, 0x26, 0x1a, 0x15, 0x35, 0x02, 0x4b, 0x87, 0xe8, - 0x90, 0x4f, 0x5d, 0x04, 0x62, 0xdb, 0xf1, 0x7c, 0xea, 0x50, 0xd8, 0xf5, 0x5b, 0xcf, 0x1d, 0x33, - 0xe6, 0x55, 0xcf, 0xcd, 0xc1, 0x43, 0x24, 0x35, 0x41, 0x24, 0x81, 0x48, 0x02, 0x91, 0x54, 0x3e, - 0x16, 0x82, 0x5a, 0x5d, 0x25, 0x03, 0x13, 0x57, 0x48, 0x7e, 0x56, 0x98, 0x48, 0x2b, 0x26, 0x0b, - 0xa9, 0x2f, 0x76, 0x35, 0x26, 0xa1, 0xce, 0xc4, 0xd4, 0x5a, 0x91, 0x3c, 0x08, 0xab, 0x9a, 0x2b, - 0x07, 0x09, 0xc2, 0xa4, 0xf6, 0x98, 0x49, 0x06, 0x26, 0x79, 0xe1, 0x52, 0x87, 0xc9, 0x04, 0xc6, - 0x60, 0xa0, 0x46, 0x81, 0x7e, 0xef, 0x9a, 0x02, 0x1b, 0x39, 0xe9, 0x1e, 0x31, 0x37, 0x29, 0xf3, - 0xce, 0xe2, 0x68, 0x38, 0xfa, 0xec, 0x64, 0x84, 0x8d, 0x48, 0x9f, 0xe5, 0x9e, 0x98, 0xef, 0x17, - 0x4f, 0xa0, 0x55, 0xdc, 0xd0, 0x48, 0x1a, 0x1c, 0x71, 0xc3, 0x23, 0x6d, 0x80, 0x0a, 0x33, 0x44, - 0x85, 0x19, 0xa4, 0x22, 0x0c, 0x13, 0xaf, 0x81, 0x62, 0x36, 0x54, 0xc9, 0x0d, 0x63, 0x0b, 0x04, - 0x3f, 0x2b, 0x6d, 0xf4, 0x0d, 0x5c, 0x5f, 0xf5, 0xbe, 0x9b, 0x5b, 0xbd, 0x44, 0xcc, 0x75, 0xc6, - 0x56, 0xe6, 0x13, 0xab, 0x3b, 0x26, 0x27, 0x49, 0x9c, 0x59, 0x8d, 0x86, 0xf9, 0xa0, 0xbc, 0xc0, - 0xf2, 0xa3, 0xe8, 0xdf, 0x24, 0xa6, 0xf1, 0x60, 0xd8, 0x82, 0xce, 0xd9, 0xfa, 0xf9, 0x77, 0xc9, - 0x4f, 0x6b, 0x36, 0x1a, 0xf0, 0xd2, 0xe0, 0xa5, 0xc1, 0x4b, 0x83, 0x97, 0x06, 0x2f, 0x4d, 0x46, - 0xda, 0xc6, 0x96, 0x13, 0x34, 0x3b, 0x82, 0x4e, 0x5a, 0x47, 0x60, 0x2a, 0xde, 0xc3, 0x33, 0xcb, - 0x3f, 0x32, 0xea, 0x43, 0x93, 0x3a, 0x5c, 0xb3, 0x32, 0x69, 0x72, 0xd2, 0xe2, 0x40, 0x76, 0x5e, - 0xe9, 0x73, 0x17, 0xab, 0x32, 0x22, 0x75, 0x0e, 0x43, 0x58, 0xcd, 0x2c, 0x6e, 0x29, 0xe3, 0x5b, - 0x71, 0x5b, 0xaa, 0xdd, 0x38, 0x3b, 0xc6, 0xae, 0x92, 0xda, 0x55, 0x6f, 0x76, 0x63, 0x96, 0x3e, - 0x50, 0x3e, 0x50, 0x3e, 0xd7, 0xed, 0x1a, 0x79, 0x4a, 0xdd, 0x8f, 0x02, 0x39, 0x58, 0x3f, 0x9d, - 0x70, 0x97, 0x70, 0x7c, 0x08, 0x31, 0x00, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, - 0x65, 0xa4, 0x0d, 0xe1, 0x16, 0x38, 0x62, 0x3b, 0xe8, 0x88, 0xe9, 0xa6, 0xb2, 0x8d, 0x47, 0x71, - 0x77, 0x2c, 0x9e, 0x76, 0x97, 0x9c, 0x32, 0x84, 0x56, 0xe0, 0x91, 0xc1, 0x23, 0x83, 0x47, 0x06, - 0x8f, 0x4c, 0x48, 0xda, 0x10, 0x5a, 0xc9, 0xfd, 0xb3, 0x2f, 0xa1, 0x95, 0x06, 0x48, 0x70, 0xa1, - 0x9f, 0xbd, 0x09, 0xad, 0x1c, 0x75, 0x1a, 0xd8, 0x55, 0x62, 0xbb, 0x0a, 0xa1, 0x15, 0x20, 0x7a, - 0x20, 0xfa, 0xd7, 0x10, 0xbd, 0xe5, 0x7a, 0x56, 0x20, 0x0a, 0xe6, 0xe3, 0x19, 0x91, 0x24, 0x09, - 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x0f, 0x24, 0x9f, 0x11, 0xc9, 0x9f, 0x0a, 0x02, 0xf9, - 0x63, 0x00, 0xf9, 0x2d, 0x05, 0xf2, 0xc8, 0x91, 0x04, 0x90, 0x27, 0xde, 0x52, 0xad, 0xe3, 0x36, - 0x36, 0x15, 0x70, 0x3c, 0x70, 0x3c, 0x70, 0x7c, 0x39, 0x70, 0xfc, 0x83, 0xe5, 0x05, 0x63, 0xc3, - 0x9e, 0xb6, 0x08, 0x93, 0x83, 0xf3, 0xcb, 0x13, 0x03, 0xa7, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0xa7, - 0x02, 0xa7, 0xae, 0xf4, 0x6d, 0x94, 0x4c, 0x03, 0x3c, 0x13, 0x98, 0x2b, 0xbe, 0x97, 0x3b, 0x07, - 0x56, 0xe7, 0x9a, 0x8b, 0xb7, 0x05, 0xd7, 0x6e, 0x65, 0x0d, 0x4f, 0x05, 0xe7, 0xe4, 0x6e, 0x42, - 0xfe, 0xec, 0xc4, 0x93, 0x66, 0xe3, 0xfd, 0x1f, 0x37, 0x4d, 0xfd, 0x2c, 0x6e, 0x08, 0xde, 0x8c, - 0xfe, 0x4c, 0x1e, 0xcf, 0x37, 0x0a, 0x8f, 0x9b, 0x87, 0x27, 0xcd, 0xc4, 0x53, 0x7f, 0x70, 0x5d, - 0x5b, 0x71, 0xb1, 0x6f, 0xdb, 0x7f, 0xb3, 0x43, 0x08, 0xbc, 0x18, 0x69, 0xec, 0x40, 0x1a, 0xd9, - 0xa5, 0x71, 0x4d, 0x9b, 0xff, 0x6e, 0xad, 0xba, 0xfc, 0x5a, 0xb7, 0xf6, 0xbd, 0x71, 0x70, 0xfc, - 0x54, 0xad, 0xae, 0xf9, 0xcf, 0xbb, 0x75, 0x63, 0x44, 0x1d, 0xf4, 0x37, 0xea, 0xfe, 0x3f, 0x95, - 0xee, 0x8d, 0xde, 0x5c, 0x5b, 0x2b, 0xd3, 0x07, 0xe2, 0x2a, 0xec, 0xdf, 0xdd, 0xfe, 0xcf, 0xdd, - 0xda, 0xf7, 0xce, 0xd3, 0xf4, 0x71, 0xf4, 0xbb, 0xf6, 0xa3, 0x5a, 0x7f, 0xdb, 0xeb, 0xd5, 0xeb, - 0x6f, 0x6b, 0x93, 0x1b, 0x10, 0xbf, 0xef, 0xed, 0xe4, 0xbf, 0xef, 0xba, 0xdd, 0x95, 0x97, 0x6a, - 0xd5, 0x9f, 0xea, 0xbb, 0xa8, 0x96, 0xc0, 0xae, 0xbc, 0xb8, 0x85, 0x3e, 0x5a, 0x7e, 0x70, 0x1e, - 0x04, 0x9e, 0x8c, 0x6b, 0x7a, 0x69, 0x39, 0x1f, 0xec, 0xa8, 0x64, 0x91, 0x10, 0x91, 0x58, 0xb9, - 0x34, 0xbe, 0xcd, 0xcd, 0xd8, 0x3c, 0x6d, 0xb7, 0x3b, 0x27, 0xed, 0x76, 0xe3, 0xe4, 0xe8, 0xa4, - 0x71, 0x76, 0x7c, 0xdc, 0xec, 0x34, 0x25, 0xa2, 0x2b, 0x7f, 0x7a, 0xa6, 0xf2, 0x94, 0xf9, 0xcb, - 0x63, 0xa5, 0xab, 0x39, 0x63, 0xdb, 0x06, 0x1f, 0x07, 0x3e, 0x8e, 0x9b, 0x8f, 0xb3, 0x2d, 0xe7, - 0x6f, 0xdd, 0x76, 0x07, 0x92, 0x45, 0xc9, 0xd6, 0xcc, 0x0d, 0x56, 0x0e, 0xac, 0x1c, 0x58, 0x39, - 0xb0, 0x72, 0x60, 0xe5, 0xc0, 0xca, 0x81, 0x95, 0x03, 0x0f, 0x00, 0x56, 0x0e, 0xac, 0x1c, 0x58, - 0x39, 0xb0, 0x72, 0x60, 0xe5, 0xc0, 0xca, 0x81, 0x95, 0x03, 0xc7, 0xb2, 0xd5, 0x1c, 0x8b, 0xe7, - 0x8e, 0x03, 0xe5, 0xe9, 0x96, 0x29, 0x4f, 0xb1, 0xcc, 0xa6, 0x06, 0xc3, 0x02, 0x86, 0x05, 0x0c, - 0x0b, 0x18, 0x16, 0x30, 0x2c, 0x38, 0x9f, 0xb3, 0x7d, 0x70, 0x0e, 0xe7, 0x73, 0x24, 0x2f, 0x00, - 0xe7, 0x73, 0xb8, 0xb7, 0x54, 0xeb, 0x18, 0x25, 0xcc, 0xc5, 0x36, 0x15, 0xb0, 0x2a, 0xb0, 0xea, - 0x4e, 0x60, 0xd5, 0xad, 0xea, 0x76, 0x7b, 0x3e, 0xbe, 0x0d, 0x3d, 0x60, 0x65, 0xb2, 0xfa, 0x23, - 0x42, 0x78, 0xfa, 0x30, 0x74, 0xe2, 0x87, 0xdd, 0xa8, 0x81, 0xda, 0xd0, 0x18, 0x28, 0x7f, 0xf9, - 0x85, 0xf8, 0xb9, 0x3f, 0xfe, 0xba, 0xf2, 0x9e, 0xf9, 0xd7, 0xa2, 0x97, 0x46, 0x5d, 0x6b, 0xf4, - 0xd0, 0x89, 0x1f, 0xc6, 0xdc, 0x74, 0xfc, 0xee, 0xe4, 0xf9, 0xe1, 0x83, 0xe7, 0x8d, 0xa2, 0x5f, - 0xfa, 0xad, 0xe7, 0x8e, 0x47, 0x87, 0xac, 0xad, 0xc8, 0x93, 0xef, 0xfb, 0x5e, 0xf9, 0x03, 0xcf, - 0x1a, 0xc5, 0x62, 0x5a, 0x39, 0x37, 0x4d, 0x2b, 0x7c, 0x6c, 0xd8, 0xda, 0xe7, 0xeb, 0xeb, 0x2b, - 0xcd, 0x34, 0x02, 0x43, 0x1b, 0xba, 0x9e, 0x76, 0x71, 0xf5, 0xd0, 0xd1, 0x66, 0xdf, 0x54, 0x88, - 0x5d, 0x68, 0x82, 0x5d, 0x00, 0xbb, 0x00, 0x76, 0x01, 0xec, 0x42, 0x6a, 0xb5, 0x66, 0x09, 0x65, - 0xae, 0x16, 0x90, 0x56, 0xb7, 0x22, 0xe8, 0xe2, 0xe9, 0x75, 0xcf, 0x59, 0x8f, 0xdf, 0x5c, 0x6f, - 0x62, 0x36, 0x5c, 0x67, 0xd9, 0x60, 0x1c, 0x68, 0xbe, 0x0a, 0x7c, 0x2d, 0xb8, 0x53, 0x5a, 0x7c, - 0xb9, 0x5a, 0x78, 0xb9, 0x5a, 0x74, 0xb9, 0x3d, 0x47, 0x36, 0x60, 0x2b, 0x44, 0x5e, 0x8b, 0x9b, - 0x99, 0x22, 0xcc, 0x4d, 0x61, 0x66, 0xa7, 0x28, 0xf3, 0x53, 0xb8, 0x19, 0x2a, 0xdc, 0x1c, 0x15, - 0x69, 0x96, 0x84, 0x31, 0xbe, 0x90, 0xbc, 0x8a, 0x91, 0xe1, 0x2b, 0xd2, 0x2a, 0x9a, 0x76, 0xb8, - 0xe2, 0xde, 0x9f, 0x09, 0xce, 0x29, 0x9a, 0x86, 0x28, 0x83, 0x56, 0x5f, 0x59, 0xd9, 0x42, 0xd2, - 0x12, 0x57, 0xd6, 0xf8, 0xb4, 0x80, 0xb9, 0x8b, 0x4a, 0x8c, 0x4a, 0x2e, 0x60, 0x6f, 0xd2, 0x15, - 0xa7, 0x3f, 0x7d, 0xd1, 0x19, 0x9f, 0x0e, 0xf6, 0x48, 0x8a, 0x3b, 0x90, 0xe2, 0xc2, 0xa4, 0x18, - 0x69, 0x8e, 0x79, 0x54, 0xe0, 0xf6, 0xa6, 0x3b, 0x16, 0xa4, 0xd6, 0x90, 0xce, 0x59, 0x2e, 0x96, - 0x6a, 0xcb, 0x22, 0x3b, 0x7d, 0xae, 0xc8, 0x8e, 0x4c, 0x28, 0xaf, 0xe2, 0x0f, 0xee, 0xd4, 0xbd, - 0x31, 0x32, 0x82, 0xbb, 0x49, 0x08, 0x66, 0xa4, 0x9c, 0x49, 0x14, 0x44, 0x9f, 0x8b, 0xb1, 0xac, - 0x7b, 0x78, 0xb8, 0x18, 0x86, 0x59, 0x08, 0xc0, 0x44, 0xa1, 0x97, 0x59, 0xd0, 0xe5, 0x95, 0x70, - 0xcb, 0x9b, 0xed, 0x58, 0x6d, 0x06, 0x07, 0xa8, 0x92, 0xdc, 0x32, 0x3d, 0xf0, 0x8c, 0xc1, 0xdf, - 0x96, 0x73, 0xcb, 0xb6, 0xda, 0x33, 0xf7, 0x66, 0x75, 0x4e, 0xa6, 0x3d, 0xcc, 0x1b, 0x51, 0x62, - 0xa7, 0xf8, 0x24, 0x28, 0x3d, 0x31, 0x0a, 0x4f, 0x8a, 0xb2, 0x13, 0xa7, 0xe8, 0xc4, 0x29, 0x39, - 0x49, 0x0a, 0x6e, 0xbb, 0xb2, 0x11, 0xb8, 0x23, 0x40, 0x95, 0xc1, 0x54, 0xe2, 0x85, 0x32, 0x12, - 0x64, 0xf2, 0x01, 0x10, 0x78, 0x2f, 0xbf, 0xfa, 0x94, 0x56, 0xa3, 0x85, 0xa9, 0xd3, 0xc2, 0xd4, - 0x6a, 0x11, 0xea, 0x55, 0x08, 0xd2, 0xec, 0x4a, 0xe0, 0x7d, 0xda, 0xb5, 0x49, 0x37, 0xd5, 0xc0, - 0x53, 0xf1, 0x1a, 0x09, 0x07, 0xde, 0xd7, 0x5c, 0x83, 0x58, 0xe0, 0x5d, 0xae, 0x97, 0x54, 0x32, - 0x69, 0x43, 0x86, 0x7f, 0xe9, 0x23, 0x09, 0x60, 0xdb, 0x4c, 0x5f, 0x61, 0x26, 0xb0, 0x28, 0x53, - 0x58, 0xb8, 0x49, 0x2c, 0xdc, 0x34, 0x16, 0x69, 0x22, 0x65, 0x4c, 0xa5, 0x90, 0xc9, 0x4c, 0x6e, - 0x64, 0x71, 0x49, 0x00, 0x52, 0x27, 0xe3, 0x96, 0x55, 0xaf, 0xe0, 0x91, 0x18, 0xe1, 0x93, 0x72, - 0xd3, 0x9f, 0x02, 0x22, 0x87, 0x45, 0x9c, 0x9c, 0x4b, 0x26, 0x2f, 0xa8, 0x55, 0x75, 0x32, 0x7f, - 0xd1, 0x87, 0x9e, 0x66, 0xa2, 0x55, 0xd4, 0xe1, 0x27, 0x61, 0xad, 0xb5, 0xb8, 0xf5, 0x0a, 0x38, - 0x61, 0xb7, 0xb2, 0xf5, 0xc4, 0x3b, 0x61, 0x61, 0xf3, 0x15, 0x64, 0x98, 0xe5, 0x67, 0xdb, 0xa9, - 0xe2, 0x5c, 0xd2, 0x27, 0xf4, 0x92, 0x79, 0x0b, 0x3b, 0xa9, 0x27, 0xb7, 0x61, 0x04, 0x96, 0xb0, - 0x12, 0x45, 0xcc, 0x66, 0x91, 0x51, 0x79, 0xfa, 0x63, 0xf9, 0x02, 0x80, 0xdb, 0x81, 0xdb, 0x81, - 0xdb, 0x81, 0xdb, 0x81, 0xdb, 0x85, 0xa4, 0x35, 0xb4, 0x9a, 0x9e, 0x1a, 0x16, 0x91, 0xb9, 0x7f, - 0x22, 0x5b, 0xe6, 0xf2, 0x2e, 0xcd, 0x99, 0x6c, 0x27, 0xbc, 0x3d, 0xf0, 0xd4, 0xe0, 0xa9, 0x15, - 0x3f, 0xc3, 0xae, 0x15, 0xd9, 0x28, 0x32, 0x43, 0x6f, 0x35, 0x57, 0x8c, 0x35, 0x69, 0x8f, 0x7f, - 0x83, 0x70, 0x96, 0xa2, 0xf4, 0x03, 0x23, 0x50, 0x72, 0xc9, 0x29, 0x93, 0xe9, 0x76, 0x2c, 0x37, - 0xa5, 0x85, 0xdc, 0x94, 0xad, 0x71, 0xec, 0x91, 0x9b, 0x82, 0xdc, 0x94, 0xd7, 0x6e, 0x18, 0x72, - 0x53, 0x44, 0xae, 0x00, 0xb9, 0x29, 0xe0, 0xb8, 0xc0, 0x71, 0x81, 0xe3, 0x02, 0xc7, 0x05, 0x8e, - 0x2b, 0xbf, 0xb4, 0x22, 0x37, 0x85, 0xeb, 0x07, 0xb9, 0x29, 0xb2, 0xf3, 0x23, 0x3d, 0x40, 0x58, - 0x6b, 0x2d, 0x6e, 0x3d, 0xe4, 0xa6, 0x60, 0xf3, 0x69, 0xc8, 0x4d, 0x29, 0xfd, 0xf7, 0x41, 0xea, - 0x04, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x60, 0x25, 0x9f, 0xb4, 0x22, 0x75, 0xa2, - 0xe8, 0xd4, 0x09, 0x04, 0x2b, 0x5e, 0xd6, 0x31, 0xfb, 0x1d, 0xd9, 0x9f, 0x04, 0x94, 0x51, 0xdd, - 0x89, 0x7f, 0xc7, 0xed, 0x45, 0x75, 0x27, 0xb1, 0x3a, 0x43, 0x93, 0x6f, 0x1a, 0x78, 0xe3, 0x41, - 0xe0, 0xc4, 0xa6, 0xe6, 0x62, 0x3a, 0xf7, 0x97, 0x4f, 0x73, 0x57, 0xfe, 0xe5, 0x62, 0xf4, 0xd0, - 0xf9, 0x72, 0x3e, 0xb9, 0xde, 0x2f, 0x9f, 0x3d, 0x6f, 0xf4, 0x7b, 0x78, 0xa5, 0x5f, 0x92, 0x77, - 0xff, 0x35, 0xbd, 0xd0, 0x3d, 0x2e, 0x49, 0xc5, 0x9b, 0xc5, 0x22, 0x92, 0xbd, 0x22, 0x56, 0x78, - 0xaa, 0x85, 0xc2, 0x53, 0xa5, 0xc1, 0x4c, 0x28, 0x3c, 0xb5, 0xbf, 0xe6, 0x94, 0xbd, 0xf0, 0x94, - 0x31, 0x18, 0xa8, 0x51, 0xa0, 0xdf, 0xbb, 0xa6, 0x60, 0x82, 0xdf, 0xfc, 0xa4, 0xec, 0x2d, 0xa9, - 0xe4, 0xf2, 0x47, 0x2a, 0x11, 0x07, 0xcd, 0xeb, 0x67, 0xf6, 0xd1, 0x89, 0xbb, 0xac, 0x24, 0x1e, - 0xd2, 0x22, 0x77, 0x8e, 0xa4, 0x43, 0x5a, 0x64, 0x69, 0x49, 0xb8, 0x44, 0xda, 0xbe, 0xba, 0xae, - 0xad, 0x0c, 0x47, 0xb0, 0x17, 0x77, 0xb3, 0x89, 0x33, 0x02, 0xab, 0x8e, 0x84, 0xf9, 0xa0, 0xbc, - 0xc0, 0xf2, 0xa3, 0xec, 0xd0, 0x09, 0x08, 0x7f, 0x10, 0xe8, 0x5f, 0x36, 0xf3, 0x29, 0xd6, 0xcf, - 0xbf, 0x4b, 0xee, 0x45, 0xb3, 0xd1, 0x80, 0x73, 0x01, 0xe7, 0x02, 0xce, 0x05, 0x9c, 0x0b, 0x38, - 0x17, 0x32, 0xd2, 0x36, 0xb6, 0x9c, 0xa0, 0xd9, 0x11, 0xf4, 0x2d, 0x3a, 0x02, 0x53, 0xc9, 0x66, - 0x88, 0x0a, 0xc6, 0x63, 0x8b, 0xc8, 0x08, 0x4d, 0xd2, 0xf1, 0x9a, 0xc2, 0x79, 0x03, 0x45, 0x27, - 0xe1, 0x15, 0x97, 0x7c, 0x27, 0x98, 0xf1, 0x59, 0x48, 0xa6, 0x67, 0xb2, 0xa5, 0xda, 0x8d, 0xb3, - 0x63, 0xec, 0x2a, 0xa9, 0x5d, 0xb5, 0x23, 0x99, 0x0a, 0x7d, 0x80, 0xd3, 0x95, 0x4d, 0x35, 0x18, - 0x7b, 0x5e, 0x08, 0x0b, 0xa7, 0xe7, 0x18, 0x05, 0x1b, 0x2d, 0x2c, 0xcf, 0x0c, 0x88, 0x05, 0x88, - 0x05, 0x88, 0x05, 0x88, 0x05, 0x88, 0x25, 0x7c, 0x26, 0x4f, 0xf0, 0x2c, 0x1e, 0x10, 0x16, 0x8b, - 0x3b, 0xdc, 0x80, 0x2f, 0x0c, 0x84, 0x45, 0xbb, 0xa5, 0x5a, 0xc7, 0x00, 0x58, 0x00, 0x58, 0x00, - 0x58, 0x79, 0x37, 0xd5, 0xc8, 0x53, 0xea, 0x7e, 0x14, 0xc8, 0xe1, 0xaa, 0xe9, 0x84, 0xbb, 0x14, - 0xdf, 0x0b, 0xfd, 0x62, 0x04, 0xf8, 0x80, 0x3e, 0x81, 0x3e, 0x81, 0x3e, 0x81, 0x3e, 0x65, 0xa4, - 0x0d, 0xd9, 0x43, 0x65, 0xf2, 0x1f, 0x74, 0x53, 0xd9, 0xc6, 0xa3, 0xb8, 0x17, 0x11, 0x4f, 0xbb, - 0x4b, 0xbe, 0x04, 0x32, 0x85, 0xe0, 0x48, 0xc0, 0x91, 0x80, 0x23, 0x01, 0x47, 0x42, 0x48, 0xda, - 0x90, 0x29, 0x94, 0xfb, 0x07, 0x3c, 0x36, 0xcf, 0xbc, 0xe0, 0xb1, 0x45, 0xb6, 0x54, 0x91, 0x3c, - 0xf6, 0x51, 0xa7, 0x81, 0x5d, 0x25, 0xb6, 0xab, 0x40, 0x64, 0xef, 0x30, 0x10, 0x95, 0xce, 0x10, - 0x92, 0xca, 0x0c, 0xc2, 0x51, 0x15, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x0d, 0x79, - 0x54, 0x04, 0xaa, 0x11, 0x79, 0x54, 0xdb, 0x8a, 0x3f, 0x71, 0x52, 0x05, 0xf8, 0x93, 0x78, 0x4b, - 0x89, 0xd7, 0x22, 0x07, 0xfc, 0x04, 0xfc, 0xdc, 0x41, 0xf8, 0xf9, 0x60, 0x79, 0xc1, 0xd8, 0xb0, - 0xf5, 0xb8, 0xf4, 0xa0, 0x1c, 0x0a, 0x5d, 0x9e, 0x18, 0xf0, 0x0a, 0xf0, 0x0a, 0xf0, 0x0a, 0xf0, - 0x0a, 0xf0, 0x2a, 0x96, 0x36, 0x6b, 0x24, 0xa4, 0x1b, 0xe7, 0xf5, 0x63, 0xf3, 0x4c, 0x60, 0xae, - 0xf8, 0x5e, 0xee, 0x1c, 0xc6, 0x9a, 0xad, 0xdc, 0x43, 0x5b, 0x70, 0xed, 0x56, 0xd6, 0xf0, 0x54, - 0xb6, 0x44, 0x7b, 0xa0, 0x3c, 0x47, 0xbc, 0xfd, 0x57, 0xa5, 0x5a, 0xbd, 0x69, 0xe8, 0x67, 0xfd, - 0x1f, 0x37, 0x4d, 0xfd, 0xac, 0x3f, 0x79, 0xd8, 0x8c, 0xfe, 0x4c, 0x1e, 0xb7, 0x6e, 0x1a, 0x7a, - 0x7b, 0xfa, 0xf8, 0xf8, 0xa6, 0xa1, 0x1f, 0xf7, 0x6b, 0xbd, 0x5e, 0xbd, 0xf6, 0xfd, 0xe8, 0x29, - 0xfd, 0x07, 0xab, 0x3f, 0xdd, 0xf4, 0x7a, 0xa3, 0xef, 0x7f, 0x3c, 0x85, 0xbf, 0x3f, 0x3e, 0xf5, - 0x7f, 0xae, 0xbd, 0xab, 0xec, 0x5a, 0x67, 0x9c, 0x83, 0x1d, 0x96, 0xc6, 0x0e, 0xa4, 0x91, 0x5d, - 0x1a, 0xbb, 0x3f, 0x42, 0x99, 0x31, 0xf4, 0xe1, 0xb9, 0xfe, 0x5b, 0xff, 0x7b, 0xe3, 0xa0, 0xfd, - 0x54, 0xeb, 0xd6, 0xaa, 0xcb, 0xaf, 0x75, 0x6b, 0xdf, 0x1b, 0x07, 0xc7, 0x4f, 0xd5, 0xea, 0x9a, - 0xff, 0xbc, 0x5b, 0x37, 0x46, 0xed, 0x47, 0xb5, 0x5a, 0x8d, 0xe5, 0x70, 0x41, 0x36, 0x6f, 0x1a, - 0xcd, 0xfe, 0xbb, 0xe8, 0xe1, 0xe4, 0x77, 0x22, 0xdd, 0x1b, 0xbd, 0xb9, 0xb6, 0x56, 0xa6, 0x0f, - 0xc4, 0x55, 0xd8, 0xbf, 0xbb, 0xfd, 0x9f, 0xbb, 0xb5, 0xef, 0x9d, 0xa7, 0xe9, 0xe3, 0xe8, 0x77, - 0xed, 0x47, 0xb5, 0xfe, 0xb6, 0xd7, 0xab, 0xd7, 0xdf, 0xd6, 0x26, 0x37, 0x20, 0x7e, 0xdf, 0xdb, - 0xc9, 0x7f, 0xdf, 0x75, 0xbb, 0x2b, 0x2f, 0xd5, 0xaa, 0x3f, 0xd5, 0x77, 0x51, 0x2d, 0x6d, 0x3b, - 0x29, 0xc0, 0xec, 0x96, 0x7e, 0xb4, 0xfc, 0xe0, 0x3c, 0x08, 0x84, 0x3a, 0x83, 0x5f, 0x5a, 0xce, - 0x07, 0x3b, 0xaa, 0x77, 0x28, 0xc4, 0x7f, 0x55, 0x2e, 0x8d, 0x6f, 0x73, 0x33, 0x36, 0x4f, 0xdb, - 0xed, 0xce, 0x49, 0xbb, 0xdd, 0x38, 0x39, 0x3a, 0x69, 0x9c, 0x1d, 0x1f, 0x37, 0x3b, 0x4d, 0x89, - 0xa0, 0xc0, 0x9f, 0x9e, 0xa9, 0x3c, 0x65, 0xfe, 0xf2, 0x58, 0xe9, 0x6a, 0xce, 0xd8, 0xb6, 0x41, - 0x23, 0x3d, 0x4b, 0x23, 0xd9, 0x96, 0xf3, 0xb7, 0x6e, 0xbb, 0x03, 0xc9, 0x42, 0x9c, 0x6b, 0xe6, - 0x06, 0x99, 0x04, 0x32, 0x09, 0x64, 0x12, 0xc8, 0x24, 0x90, 0x49, 0x20, 0x93, 0x40, 0x26, 0x01, - 0xbe, 0x82, 0x4c, 0x02, 0x99, 0x04, 0x32, 0x09, 0x64, 0x12, 0xc8, 0x24, 0x90, 0x49, 0x5b, 0x4c, - 0x26, 0x6d, 0x35, 0x35, 0xe0, 0xb9, 0xe3, 0x40, 0x79, 0xba, 0x65, 0xca, 0x33, 0x03, 0xb3, 0xa9, - 0x41, 0x0c, 0x80, 0x18, 0x00, 0x31, 0x00, 0x62, 0x00, 0xc4, 0x00, 0x92, 0xf8, 0xb7, 0x0f, 0x85, - 0x20, 0x89, 0x5f, 0xf2, 0x02, 0x90, 0xc4, 0xcf, 0xbd, 0xa5, 0x50, 0x0c, 0x15, 0x49, 0xfc, 0x7b, - 0x03, 0xb1, 0xb6, 0xaa, 0x0d, 0xf4, 0xf9, 0xf8, 0x36, 0x74, 0xdc, 0x94, 0xc9, 0x6a, 0x46, 0x85, - 0x60, 0xe0, 0x61, 0xe8, 0x7b, 0x0e, 0xbb, 0x51, 0x8b, 0xc6, 0xa1, 0x31, 0x50, 0xfe, 0xf2, 0x0b, - 0xf1, 0x73, 0x7f, 0xfc, 0x75, 0xe5, 0x3d, 0xf3, 0xaf, 0x45, 0x2f, 0x8d, 0xba, 0xd6, 0xe8, 0xa1, - 0x13, 0x3f, 0x8c, 0x99, 0xc0, 0xf8, 0xdd, 0xc9, 0xf3, 0xc3, 0x07, 0xcf, 0x1b, 0x45, 0xbf, 0xf4, - 0x5b, 0xcf, 0x1d, 0x8f, 0x0e, 0x39, 0x5b, 0xf4, 0x27, 0x5f, 0xf7, 0xbd, 0xf2, 0x07, 0x9e, 0x35, - 0x0a, 0xd5, 0x5b, 0xf8, 0xad, 0xcf, 0x4d, 0xd3, 0x0a, 0x1f, 0x1b, 0xb6, 0xf6, 0xf9, 0xfa, 0xfa, - 0x4a, 0x33, 0x8d, 0xc0, 0xd0, 0x86, 0xae, 0xa7, 0x5d, 0x5c, 0x3d, 0x74, 0xb4, 0xd9, 0x17, 0x15, - 0xc2, 0xc4, 0x4d, 0x60, 0x62, 0x60, 0x62, 0x60, 0x62, 0x60, 0xe2, 0xd4, 0x6a, 0xcd, 0x12, 0xca, - 0x6e, 0x2b, 0x20, 0x87, 0x69, 0x45, 0xd0, 0xc5, 0x73, 0x99, 0x9e, 0xb3, 0x1e, 0xbf, 0xb9, 0xde, - 0xc4, 0x6c, 0xb8, 0xce, 0xb2, 0xc1, 0x38, 0xd0, 0x7c, 0x15, 0xf8, 0x5a, 0x70, 0xa7, 0xb4, 0xf8, - 0x72, 0xb5, 0xf0, 0x72, 0xb5, 0xe8, 0x72, 0x7b, 0x8e, 0x6c, 0x74, 0x4c, 0x88, 0x72, 0x15, 0x37, - 0x33, 0x45, 0x98, 0x9b, 0xc2, 0xcc, 0x4e, 0x51, 0xe6, 0xa7, 0x70, 0x33, 0x54, 0xb8, 0x39, 0x2a, - 0xd2, 0x2c, 0x09, 0x23, 0x53, 0x21, 0x79, 0x15, 0xa3, 0x70, 0x57, 0xa4, 0x55, 0x34, 0xc7, 0x6b, - 0xc5, 0xbd, 0x3f, 0x13, 0x9c, 0x53, 0x34, 0xe7, 0x4b, 0x06, 0xac, 0xbe, 0xb2, 0xb2, 0x85, 0xe4, - 0x80, 0xad, 0xac, 0xf1, 0x69, 0x01, 0x73, 0x17, 0x95, 0x85, 0x92, 0x5c, 0xc0, 0xde, 0xe4, 0x86, - 0xc9, 0x30, 0x6c, 0x05, 0xe9, 0xe5, 0x72, 0x48, 0x71, 0x07, 0x52, 0x5c, 0x98, 0x14, 0x23, 0xa7, - 0x2c, 0x8f, 0x0a, 0xdc, 0xde, 0xdc, 0xb2, 0x82, 0xd4, 0x1a, 0x72, 0xe7, 0xca, 0xc5, 0x52, 0x6d, - 0x59, 0x60, 0xa7, 0xcf, 0x15, 0xd8, 0x71, 0x1c, 0x37, 0x30, 0x62, 0x96, 0x87, 0xcf, 0x18, 0x56, - 0xfc, 0xc1, 0x9d, 0xba, 0x37, 0x46, 0x46, 0x70, 0x37, 0x89, 0xc0, 0x8c, 0x94, 0x33, 0x88, 0xa8, - 0x13, 0x7d, 0x2e, 0xc4, 0xb2, 0xee, 0xe1, 0xe1, 0x62, 0x14, 0x66, 0x21, 0xfe, 0x12, 0x45, 0x5e, - 0x66, 0x31, 0x97, 0x97, 0xa3, 0x2d, 0x6f, 0xb6, 0x63, 0xb1, 0x19, 0xfc, 0x1f, 0xc1, 0x94, 0x4b, - 0xf1, 0x54, 0x4b, 0x66, 0xbe, 0x8f, 0x9d, 0xdf, 0x93, 0xe0, 0xf3, 0xc4, 0xf8, 0x3b, 0x29, 0xbe, - 0x4e, 0x9c, 0x9f, 0x13, 0xe7, 0xe3, 0x24, 0xf9, 0xb7, 0xed, 0xca, 0x44, 0x60, 0xe7, 0xd3, 0x12, - 0x69, 0xb1, 0x95, 0x31, 0xf4, 0xd4, 0x90, 0x53, 0x5e, 0xa6, 0x10, 0xec, 0x84, 0x71, 0x8e, 0xab, - 0xd8, 0xe6, 0xd6, 0xeb, 0x87, 0x13, 0x8b, 0x7b, 0xb8, 0xaa, 0x9b, 0xb7, 0xc5, 0x36, 0xbe, 0x29, - 0xf1, 0x0e, 0x0d, 0x95, 0x92, 0x84, 0xe5, 0xe3, 0xad, 0xf1, 0xc1, 0x5f, 0xd3, 0xa3, 0x90, 0x1a, - 0x1e, 0xbc, 0x35, 0x3b, 0xa8, 0x77, 0x12, 0xb3, 0x53, 0x5e, 0xa4, 0x33, 0xce, 0xa0, 0x4d, 0x2b, - 0x7e, 0xe0, 0x8d, 0x07, 0x81, 0x13, 0xab, 0xed, 0x8b, 0xe9, 0x15, 0x7d, 0xf9, 0x34, 0x77, 0x79, - 0x5f, 0x2e, 0x46, 0x0f, 0x9d, 0x2f, 0xe7, 0x93, 0x8b, 0xfa, 0xf2, 0xd9, 0xf3, 0x46, 0xbf, 0x47, - 0x97, 0xf3, 0xa6, 0x9c, 0xfa, 0x89, 0x66, 0x24, 0xa2, 0x7d, 0x59, 0x51, 0xdf, 0x02, 0xcf, 0xd0, - 0xc7, 0x8e, 0x1f, 0x18, 0x5f, 0x6d, 0x5a, 0xeb, 0x5b, 0xf1, 0xd4, 0x50, 0x79, 0xca, 0x19, 0xd0, - 0x07, 0x70, 0x18, 0x04, 0x67, 0xea, 0x1a, 0x5c, 0xff, 0xf6, 0xab, 0x76, 0x7c, 0x72, 0x76, 0xaa, - 0xe9, 0xda, 0xe7, 0x38, 0xe5, 0xe1, 0x3a, 0x52, 0xf7, 0xda, 0xb5, 0x32, 0xc7, 0x8e, 0x69, 0x38, - 0x83, 0x47, 0xed, 0xca, 0x73, 0x03, 0x77, 0xe0, 0xda, 0x3d, 0xa7, 0xfa, 0xf9, 0xfa, 0xfa, 0xaa, - 0xa6, 0x7d, 0x56, 0x9e, 0x6f, 0xb9, 0x8e, 0x76, 0x34, 0x4d, 0xbb, 0x6b, 0x6b, 0x86, 0x63, 0x46, - 0xe9, 0x14, 0x1c, 0x62, 0xc1, 0xec, 0x8c, 0xcf, 0x3b, 0xe1, 0xb3, 0x45, 0x64, 0xf2, 0xfa, 0xa4, - 0xfc, 0xef, 0x05, 0xbf, 0x9b, 0x7e, 0x95, 0xcb, 0xee, 0x11, 0xbd, 0x29, 0x17, 0x09, 0x49, 0xa5, - 0xbf, 0x98, 0xec, 0xa9, 0xb8, 0x1d, 0xa5, 0xd9, 0x3f, 0xf9, 0x57, 0x39, 0xdf, 0x08, 0x39, 0x57, - 0x75, 0xea, 0x67, 0xe7, 0x66, 0x32, 0x68, 0x1d, 0x69, 0x7a, 0xc7, 0x59, 0xc4, 0x51, 0xa6, 0x75, - 0x8c, 0xf3, 0x2e, 0x2d, 0xed, 0x31, 0x03, 0x1a, 0x49, 0x2f, 0xee, 0xd8, 0x00, 0x91, 0x31, 0x7d, - 0xe1, 0x20, 0xc0, 0xc5, 0x95, 0x16, 0xce, 0xa5, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0xca, - 0x6b, 0xec, 0x45, 0xaa, 0x32, 0x34, 0x5f, 0x3d, 0x87, 0xfc, 0x5c, 0x00, 0x71, 0xfe, 0x3f, 0x39, - 0x41, 0xcb, 0x41, 0xc8, 0xb2, 0x11, 0xb0, 0x5c, 0x3e, 0x1e, 0x3b, 0xc1, 0xca, 0xee, 0xd0, 0x71, - 0x12, 0xa8, 0xe5, 0x02, 0x67, 0xd4, 0xf9, 0xf0, 0x95, 0xc8, 0xd3, 0x20, 0xdf, 0x51, 0x49, 0x60, - 0x28, 0x1c, 0x9d, 0x78, 0xad, 0x97, 0x14, 0xdc, 0x07, 0x67, 0x60, 0xbb, 0xbe, 0xe5, 0xdc, 0x86, - 0x0a, 0x2d, 0x30, 0x2c, 0x47, 0x79, 0x91, 0x2f, 0x1e, 0xe5, 0xaf, 0x47, 0x2c, 0x84, 0xaf, 0xdd, - 0x19, 0x8e, 0x69, 0x2b, 0x53, 0xfb, 0xfa, 0xa8, 0x05, 0x77, 0x96, 0xdf, 0x73, 0x2e, 0xae, 0x66, - 0x29, 0xed, 0xd4, 0xd7, 0xc7, 0x73, 0xe4, 0x89, 0x2d, 0x36, 0xc5, 0x19, 0x93, 0x62, 0x8f, 0x45, - 0x49, 0xc2, 0x5e, 0xd6, 0xd8, 0x53, 0x31, 0x98, 0x97, 0x29, 0xd6, 0x54, 0x6e, 0xe6, 0x9e, 0x91, - 0xdf, 0x12, 0xe0, 0xb9, 0xf8, 0xf8, 0xae, 0xad, 0xe4, 0xbd, 0xa4, 0x14, 0x41, 0x11, 0x3c, 0x98, - 0xb8, 0x6e, 0xd8, 0x56, 0x5e, 0x8c, 0x47, 0xef, 0xf0, 0x8d, 0xda, 0xdf, 0xed, 0x38, 0x44, 0xc1, - 0x8c, 0x53, 0x3f, 0x2f, 0x2d, 0x41, 0xcb, 0x1f, 0x4a, 0xf2, 0x86, 0x04, 0x8a, 0x28, 0x7d, 0x7c, - 0x2d, 0x9f, 0x3c, 0x67, 0x5f, 0xeb, 0x6c, 0x9f, 0xcc, 0xe8, 0x4d, 0x50, 0xed, 0x0a, 0x89, 0xdd, - 0x90, 0x6d, 0x41, 0xd2, 0xdf, 0xce, 0x0c, 0xb7, 0xb2, 0x32, 0x98, 0xa2, 0x98, 0x6c, 0xb7, 0x30, - 0xf1, 0x4d, 0xe2, 0x71, 0x32, 0x2e, 0x66, 0x3e, 0x88, 0x96, 0x1b, 0x8a, 0x51, 0x40, 0x2e, 0x32, - 0x68, 0x45, 0xe5, 0x39, 0x91, 0x43, 0x25, 0x72, 0xb7, 0x87, 0x12, 0xfa, 0xc8, 0x2a, 0x9f, 0xbc, - 0xac, 0x4f, 0xc5, 0x1c, 0x4f, 0x8e, 0x87, 0xea, 0xa6, 0x0a, 0xd4, 0x20, 0xd0, 0x03, 0xcf, 0x70, - 0xfc, 0xfb, 0x49, 0x11, 0xac, 0x9c, 0xcb, 0x3e, 0xdd, 0x87, 0xcf, 0x4f, 0x91, 0x73, 0xd5, 0xde, - 0xab, 0xa1, 0x31, 0xb6, 0x03, 0x12, 0x24, 0x55, 0x69, 0x56, 0x0a, 0xf5, 0x2d, 0x68, 0xf2, 0x97, - 0xc9, 0xb8, 0x20, 0x4a, 0xee, 0x87, 0x9c, 0xeb, 0xa1, 0x86, 0x74, 0x6c, 0x5c, 0x0e, 0x1b, 0x3e, - 0xe3, 0xe0, 0x6a, 0x8a, 0x8d, 0xe6, 0x92, 0xe5, 0xf3, 0x2e, 0x94, 0x30, 0x3d, 0x6a, 0x51, 0x6c, - 0xb7, 0x58, 0x36, 0x09, 0xb2, 0x73, 0x89, 0x6b, 0x90, 0x12, 0xb2, 0xfd, 0x1c, 0x35, 0x44, 0x93, - 0x82, 0x8e, 0xd4, 0xc4, 0x34, 0x77, 0xb9, 0x46, 0xbe, 0x72, 0x8c, 0x84, 0x94, 0x25, 0x4b, 0x8d, - 0xce, 0x64, 0xc9, 0xda, 0xad, 0xb3, 0xf6, 0x59, 0xe7, 0xa4, 0x75, 0x76, 0x8c, 0xb5, 0x2b, 0x19, - 0x09, 0xd2, 0x2f, 0x54, 0x51, 0x33, 0x90, 0xe4, 0x0c, 0xa4, 0x38, 0x43, 0xd0, 0xfe, 0xfa, 0xb7, - 0x5f, 0xb5, 0xf6, 0x69, 0xa7, 0xd5, 0x9d, 0x14, 0xbe, 0xfa, 0x14, 0x18, 0x81, 0xb2, 0x95, 0xef, - 0x6b, 0x31, 0xdb, 0xa1, 0x9d, 0x8f, 0x03, 0x77, 0x21, 0x75, 0x62, 0xcb, 0x22, 0xfc, 0x5c, 0xac, - 0xb5, 0x6c, 0x90, 0x3f, 0xc3, 0x32, 0x41, 0x43, 0x90, 0x6a, 0x08, 0x6a, 0x9a, 0xf4, 0xf1, 0xd6, - 0x0d, 0x74, 0x77, 0xa0, 0x0f, 0xdc, 0xfb, 0x51, 0xc4, 0x63, 0x99, 0xba, 0xad, 0x8c, 0x61, 0x38, - 0xf8, 0x53, 0x51, 0x0c, 0x63, 0x0e, 0x56, 0x45, 0x39, 0xa1, 0xe2, 0x34, 0xe9, 0xf0, 0xf5, 0x74, - 0xc0, 0x32, 0xa1, 0xe9, 0x50, 0xc8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x77, 0x07, 0x50, 0x7f, - 0x75, 0x5d, 0x5b, 0x19, 0x0e, 0x21, 0xa2, 0x6e, 0x36, 0x61, 0xa8, 0xca, 0x6b, 0xa8, 0xee, 0x83, - 0x31, 0x9d, 0x91, 0x0a, 0x07, 0x83, 0x46, 0x87, 0x46, 0x87, 0x46, 0x2f, 0x91, 0x46, 0x07, 0x45, - 0x9a, 0x8a, 0x6f, 0xe3, 0xa4, 0x48, 0x9b, 0xad, 0x53, 0xb0, 0xa4, 0x44, 0x92, 0xb2, 0xb8, 0x6a, - 0x60, 0x49, 0x65, 0xd7, 0x0e, 0x1c, 0xc8, 0xbe, 0xb3, 0xa4, 0xad, 0x76, 0xa7, 0xd1, 0xd5, 0xa2, - 0x04, 0x31, 0x47, 0x05, 0x49, 0x0a, 0xe8, 0x41, 0x92, 0xfb, 0xd9, 0xd1, 0xaa, 0x17, 0x57, 0x0f, - 0x9d, 0x9a, 0xf6, 0x69, 0xa4, 0x06, 0xd6, 0xd0, 0x1a, 0x44, 0x4e, 0x78, 0xcf, 0x49, 0x86, 0xfb, - 0xa4, 0xa2, 0xdd, 0xaf, 0x1d, 0x83, 0x42, 0xe5, 0xf5, 0x92, 0xd6, 0x7a, 0x4b, 0xd4, 0x6b, 0x08, - 0xdd, 0x02, 0xd8, 0x2a, 0xf1, 0xc9, 0xdd, 0xcd, 0xe0, 0x8c, 0x93, 0x1a, 0x4b, 0x9c, 0xbe, 0xe9, - 0x28, 0xeb, 0xf6, 0xee, 0xab, 0xeb, 0xf9, 0xf9, 0x33, 0x38, 0x67, 0x43, 0x21, 0x89, 0x13, 0x49, - 0x9c, 0x85, 0x00, 0xfe, 0x2d, 0x4b, 0xe2, 0x9c, 0x4a, 0x0c, 0x1d, 0x5d, 0x97, 0x8c, 0x48, 0xc3, - 0xd9, 0x35, 0xc1, 0xd9, 0x81, 0xb3, 0xdb, 0x47, 0xce, 0x8e, 0xea, 0x54, 0x7e, 0xde, 0xe3, 0x11, - 0xcf, 0x6e, 0xde, 0x5c, 0xc7, 0x25, 0x98, 0xc4, 0x9d, 0x5c, 0xec, 0x39, 0xc4, 0x9f, 0x4d, 0x0d, - 0x48, 0xe2, 0x55, 0x14, 0xf5, 0x60, 0x82, 0x98, 0x65, 0x2d, 0xea, 0x61, 0x31, 0x96, 0xf4, 0x20, - 0xaf, 0xe3, 0xc0, 0x54, 0xd4, 0x1d, 0x05, 0x33, 0x24, 0xd5, 0x8d, 0x98, 0xda, 0x11, 0x53, 0x3f, - 0x12, 0x6a, 0x88, 0x56, 0x1d, 0x11, 0xab, 0xa5, 0xe4, 0x06, 0xb0, 0x15, 0x61, 0x5f, 0xdb, 0x1c, - 0x4b, 0x77, 0x5c, 0xfd, 0xbf, 0xae, 0xc3, 0x51, 0x54, 0x81, 0xb3, 0x09, 0x16, 0x7b, 0x93, 0x2b, - 0x34, 0xb1, 0x7a, 0xf9, 0xe6, 0xd0, 0x37, 0xa9, 0x62, 0xba, 0xd4, 0xd9, 0xfd, 0xef, 0xf6, 0x7a, - 0xf5, 0xfe, 0xdb, 0x4a, 0xd9, 0xeb, 0x4b, 0x6c, 0x59, 0xbd, 0x73, 0x36, 0xa2, 0x9b, 0x4f, 0x6b, - 0x53, 0x46, 0xc2, 0x27, 0xcd, 0xc3, 0x8d, 0x47, 0xe5, 0x25, 0xed, 0x06, 0xd9, 0x7c, 0xc1, 0x35, - 0x73, 0xc1, 0x37, 0x84, 0x6f, 0x08, 0xdf, 0x70, 0x6f, 0x7c, 0xc3, 0x4b, 0xc3, 0x31, 0x8d, 0xc0, - 0xf5, 0x1e, 0x19, 0x2a, 0x1e, 0xf2, 0xfb, 0x9d, 0xa3, 0xbb, 0x47, 0x9f, 0xb1, 0x29, 0xeb, 0x96, - 0xfb, 0x9b, 0xf3, 0x8e, 0x62, 0xeb, 0xa9, 0xda, 0x5d, 0x7c, 0x5e, 0x7b, 0xcb, 0xd1, 0xc7, 0x13, - 0xae, 0xcb, 0xb6, 0xb9, 0x2e, 0xa8, 0xfd, 0x9f, 0x2b, 0xe6, 0x9f, 0x84, 0xc1, 0x93, 0x47, 0xb9, - 0xd2, 0x00, 0xe8, 0x97, 0x87, 0x60, 0x69, 0x28, 0xf9, 0x48, 0x7a, 0x1e, 0x92, 0xd8, 0xc7, 0x44, - 0x38, 0x03, 0xe1, 0x0c, 0x69, 0x5f, 0xb1, 0x5c, 0x4a, 0x98, 0xdc, 0x6f, 0x63, 0x6c, 0xd2, 0xc8, - 0xd1, 0x94, 0x71, 0xbe, 0x09, 0xe3, 0xa4, 0xc5, 0x43, 0xdc, 0x8a, 0x71, 0xda, 0x0a, 0x62, 0x97, - 0x54, 0xfb, 0xa4, 0xdd, 0x32, 0xb9, 0x76, 0x9f, 0x0c, 0x5b, 0xf2, 0x78, 0x75, 0x0b, 0x0a, 0x1e, - 0x0a, 0x7e, 0x0f, 0x15, 0x3c, 0xe2, 0xd5, 0xe0, 0x24, 0x99, 0xd5, 0x0c, 0xb7, 0xba, 0x11, 0x53, - 0x3b, 0x62, 0xea, 0x47, 0x42, 0x0d, 0xd1, 0xd3, 0x07, 0x1a, 0xe2, 0xd5, 0x1b, 0x38, 0x2e, 0x88, - 0x57, 0x23, 0x5e, 0x8d, 0x78, 0xb5, 0x3c, 0xb7, 0x49, 0xe8, 0x36, 0x5b, 0x7e, 0xdc, 0x23, 0x9e, - 0xd1, 0xd3, 0x49, 0xa6, 0x80, 0xc3, 0x03, 0x87, 0x07, 0x0e, 0x0f, 0x1c, 0x1e, 0xb2, 0xdd, 0xae, - 0xee, 0x47, 0xc1, 0x23, 0xa7, 0x87, 0x73, 0x84, 0xcc, 0x1c, 0xd2, 0x05, 0x43, 0x66, 0x0e, 0x8c, - 0x02, 0x8c, 0x02, 0x32, 0x73, 0x90, 0x99, 0xb3, 0x8b, 0xc8, 0x7a, 0x07, 0x32, 0x73, 0x4a, 0x69, - 0xa1, 0xa7, 0x29, 0x18, 0x3a, 0x6d, 0x54, 0x6b, 0x65, 0x77, 0x2f, 0xcd, 0x03, 0xcb, 0x0c, 0xcb, - 0x0c, 0xcb, 0x0c, 0xb8, 0x46, 0x07, 0xd7, 0x9c, 0xf1, 0xbd, 0x22, 0xef, 0x4e, 0xb0, 0x62, 0x3c, - 0xdb, 0x0c, 0x63, 0x7f, 0x70, 0xc6, 0xf7, 0x0c, 0xf9, 0x8e, 0xe8, 0x21, 0xbd, 0xe6, 0x47, 0xa8, - 0x87, 0x74, 0xfb, 0xb4, 0xd3, 0xec, 0x6a, 0x7f, 0xc4, 0x36, 0x4f, 0x7b, 0x6f, 0xf9, 0x03, 0xf7, - 0x41, 0x79, 0x8f, 0x71, 0x6b, 0x60, 0xed, 0x61, 0xa9, 0xd6, 0xd8, 0xa4, 0xba, 0xd8, 0xb4, 0xb0, - 0xd8, 0x49, 0xfd, 0xa8, 0xde, 0x42, 0xe7, 0xe8, 0x72, 0x2b, 0xf5, 0xb5, 0xca, 0x9d, 0x6a, 0xed, - 0xd1, 0x2f, 0x7a, 0x0f, 0x5c, 0x6f, 0xd7, 0xb3, 0x6e, 0x39, 0x2a, 0xef, 0x26, 0x0e, 0xe0, 0x64, - 0x7c, 0xb8, 0xda, 0x70, 0xb5, 0xe1, 0x6a, 0xc3, 0xd5, 0xa6, 0x87, 0xf2, 0x2c, 0x0a, 0x66, 0x5b, - 0xdd, 0x6d, 0x1c, 0x2f, 0x4a, 0x35, 0xae, 0xe8, 0xf1, 0xa2, 0x09, 0xe7, 0x54, 0x96, 0x14, 0xf4, - 0x42, 0xeb, 0xb6, 0xfd, 0xff, 0xea, 0x91, 0x24, 0x45, 0xb4, 0xf2, 0xd1, 0xf2, 0x83, 0xf3, 0x20, - 0x20, 0xaa, 0x02, 0x77, 0x69, 0x39, 0x1f, 0x6c, 0x15, 0x2a, 0x6e, 0xa2, 0x9a, 0xf0, 0x95, 0x4b, - 0xe3, 0xdb, 0xdc, 0x88, 0xcd, 0xd3, 0x76, 0xbb, 0x73, 0xd2, 0x6e, 0x37, 0x4e, 0x8e, 0x4e, 0x1a, - 0x67, 0xc7, 0xc7, 0xcd, 0x4e, 0x93, 0xa0, 0xb2, 0x7d, 0xe5, 0x4f, 0xcf, 0x54, 0x9e, 0x32, 0x7f, - 0x09, 0xef, 0xa9, 0x33, 0xb6, 0xed, 0x9d, 0x2a, 0x9f, 0x2c, 0x29, 0xa2, 0x15, 0x92, 0x73, 0x19, - 0xde, 0x78, 0x10, 0x38, 0xb1, 0x95, 0xba, 0x98, 0x4e, 0xf9, 0xe5, 0xd3, 0xdc, 0xfc, 0x5f, 0x2e, - 0x46, 0x0f, 0x9d, 0x2f, 0x53, 0x70, 0x56, 0x41, 0x15, 0xe8, 0x72, 0xed, 0x87, 0x32, 0x17, 0x82, - 0xce, 0x17, 0x20, 0x21, 0x39, 0xe6, 0x43, 0x56, 0x00, 0xba, 0x85, 0x02, 0xd0, 0x7c, 0x20, 0x08, - 0x05, 0xa0, 0x93, 0x0b, 0xcf, 0x5d, 0x00, 0xda, 0x1c, 0x8f, 0xa2, 0x98, 0xb8, 0x6e, 0xaa, 0x40, - 0x0d, 0x02, 0x3d, 0xf0, 0x0c, 0xc7, 0xbf, 0x9f, 0x74, 0x8e, 0x21, 0xaa, 0x08, 0xfd, 0xfc, 0x14, - 0x65, 0xea, 0x3b, 0xda, 0x44, 0xd3, 0x51, 0x26, 0x56, 0x07, 0xe5, 0xae, 0x51, 0xee, 0x5a, 0x8e, - 0x55, 0x41, 0x8b, 0xba, 0xac, 0xf8, 0x90, 0xaf, 0xd9, 0x19, 0xfa, 0xd3, 0x31, 0x90, 0x91, 0xe8, - 0x4f, 0x27, 0xbd, 0x76, 0xe8, 0x21, 0xb5, 0xef, 0xfd, 0xe9, 0xda, 0xa7, 0x9d, 0x56, 0x57, 0xbb, - 0xb8, 0x7a, 0xe8, 0x68, 0x9f, 0x42, 0x98, 0x69, 0x2b, 0xdf, 0xd7, 0xce, 0x27, 0x29, 0xa5, 0xda, - 0xf9, 0x38, 0x70, 0x27, 0x78, 0x7d, 0x4c, 0x9e, 0x27, 0x83, 0x16, 0x74, 0x9b, 0x7a, 0x43, 0x19, - 0x96, 0x09, 0x1a, 0x82, 0x8a, 0x76, 0xcb, 0x41, 0x36, 0x28, 0x27, 0xd4, 0x27, 0x26, 0x1d, 0xec, - 0x9c, 0x0e, 0x58, 0x26, 0x90, 0x19, 0xee, 0x7d, 0xe0, 0x4c, 0xe0, 0x4c, 0xe0, 0xcc, 0xdd, 0xc1, - 0x99, 0x5f, 0x5d, 0xd7, 0x56, 0x86, 0x43, 0x08, 0x34, 0x9b, 0xcd, 0x2d, 0xd4, 0xdf, 0xf7, 0xc1, - 0x98, 0x4e, 0x77, 0x87, 0x83, 0x41, 0xd1, 0x41, 0xd1, 0x41, 0xd1, 0x81, 0x50, 0x03, 0xa1, 0xb6, - 0xca, 0xce, 0x34, 0x5b, 0xa7, 0xe0, 0xd4, 0xc0, 0xa9, 0x81, 0x53, 0x03, 0xa7, 0xb6, 0xf5, 0x9c, - 0x5a, 0xab, 0xdd, 0x69, 0x74, 0xb5, 0x28, 0x9b, 0xc8, 0x51, 0x81, 0x76, 0xe5, 0xb9, 0x81, 0x3b, - 0x70, 0xed, 0x03, 0xed, 0xf3, 0xd2, 0x39, 0x0e, 0xed, 0xd3, 0x48, 0x0d, 0xac, 0xa1, 0x35, 0x88, - 0x58, 0x9b, 0xc9, 0xa9, 0x8e, 0xe8, 0x67, 0x7a, 0xb4, 0xe3, 0x18, 0x84, 0x5b, 0x41, 0x84, 0x1b, - 0xe5, 0x1a, 0x42, 0xb7, 0x50, 0xa1, 0x39, 0x24, 0xc1, 0x2d, 0x24, 0xc1, 0xe5, 0x48, 0x52, 0x96, - 0x49, 0x80, 0x1b, 0x3b, 0xce, 0xf8, 0xfe, 0xab, 0xf2, 0x72, 0xb0, 0xa0, 0x33, 0x67, 0x7d, 0x36, - 0x56, 0xc1, 0xa9, 0x70, 0x8d, 0x92, 0xa4, 0xc2, 0x0d, 0x91, 0x0a, 0x97, 0x05, 0x08, 0x0f, 0xf7, - 0x26, 0x15, 0x8e, 0xa8, 0x51, 0x3a, 0x6d, 0x83, 0x74, 0xa2, 0x42, 0xf3, 0xe5, 0xe7, 0xb1, 0x86, - 0xe0, 0xb1, 0x38, 0x78, 0xac, 0xe1, 0xb6, 0xf3, 0x58, 0x54, 0x85, 0xe1, 0xc9, 0x02, 0x8c, 0x2b, - 0xbb, 0x97, 0x26, 0xd0, 0x38, 0xfb, 0xc2, 0x84, 0x01, 0xc7, 0x64, 0xd0, 0x08, 0xb5, 0xd3, 0xb8, - 0xd6, 0x7d, 0xb4, 0x48, 0x2a, 0x8d, 0xc2, 0x93, 0x44, 0xab, 0x3b, 0xd2, 0x41, 0x63, 0x88, 0x16, - 0x49, 0x69, 0x77, 0x2b, 0x5d, 0x84, 0x73, 0xc5, 0xab, 0x69, 0xee, 0xc5, 0x59, 0x5c, 0xf6, 0x1e, - 0x8c, 0xdb, 0x7e, 0x68, 0x76, 0x7b, 0x4e, 0x56, 0xce, 0x70, 0x35, 0x49, 0x4f, 0xc5, 0x62, 0x62, - 0xf5, 0xc9, 0x77, 0xd2, 0x3d, 0x35, 0xa4, 0x03, 0x3c, 0x8b, 0xc3, 0x02, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x14, 0x8f, 0x7b, 0x88, 0x68, 0x0d, 0x1e, 0x7a, 0x83, 0x58, 0xdc, 0x81, 0x06, 0x80, 0x06, - 0x80, 0x06, 0x78, 0xfa, 0xe9, 0x4d, 0x8d, 0x3b, 0x63, 0xb3, 0x99, 0x64, 0x0a, 0x94, 0x54, 0x13, - 0x29, 0xa9, 0x36, 0x44, 0x49, 0xb5, 0x02, 0x95, 0x91, 0x84, 0x52, 0xa2, 0x55, 0x4e, 0xc4, 0x4a, - 0x8a, 0x8f, 0xba, 0x58, 0xd9, 0xed, 0xf4, 0x5d, 0x9e, 0x57, 0x3c, 0x97, 0x13, 0x9e, 0xb2, 0xff, - 0x31, 0x82, 0x0d, 0xb7, 0x45, 0x77, 0x0e, 0x99, 0x2e, 0xbd, 0x10, 0x3f, 0x8f, 0x6a, 0xf3, 0x94, - 0x7a, 0xa9, 0x99, 0x28, 0x16, 0x39, 0xaa, 0x85, 0x5e, 0xa2, 0x28, 0xf3, 0x17, 0xe7, 0x09, 0x0b, - 0x3e, 0x43, 0xbd, 0x30, 0x0b, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0x35, 0x6c, 0xf5, 0x86, - 0xb6, 0xfa, 0x66, 0x66, 0xab, 0xff, 0x31, 0x18, 0x7b, 0x9e, 0x72, 0x82, 0x6a, 0xed, 0xb0, 0x5e, - 0x9f, 0xb1, 0xd0, 0xfd, 0xf8, 0x23, 0x8b, 0x64, 0xf4, 0xea, 0x6b, 0xc9, 0xc8, 0xa6, 0xfa, 0x06, - 0xb3, 0xbf, 0x6d, 0x66, 0x1f, 0x65, 0x68, 0xa9, 0x22, 0x31, 0x0b, 0x81, 0x07, 0x92, 0xb8, 0x0c, - 0xdd, 0x22, 0x3d, 0x91, 0x14, 0xde, 0xa4, 0x6c, 0x1d, 0x45, 0x52, 0x29, 0xf1, 0x59, 0xd5, 0x4a, - 0x4d, 0xe0, 0xb6, 0x40, 0xe0, 0x6e, 0x8f, 0x3f, 0x06, 0x02, 0x17, 0x04, 0x2e, 0x40, 0x21, 0x40, - 0x21, 0x40, 0x21, 0x40, 0x21, 0x40, 0x61, 0x39, 0x08, 0x5c, 0xf0, 0x94, 0x30, 0x49, 0x30, 0x49, - 0x30, 0x49, 0x30, 0x49, 0x30, 0x49, 0xbb, 0xc7, 0x53, 0x82, 0x8e, 0x2b, 0x3b, 0x1d, 0x87, 0xde, - 0x50, 0x5c, 0xab, 0x5a, 0xc0, 0x6a, 0xca, 0xb6, 0x11, 0xfa, 0x67, 0x72, 0x15, 0x5f, 0x92, 0xb7, - 0x5d, 0xab, 0xe1, 0x36, 0xa6, 0xdc, 0xd3, 0x50, 0xb8, 0xa4, 0xd4, 0x2d, 0x79, 0x8a, 0x7d, 0x0b, - 0x29, 0xf6, 0xc5, 0xbb, 0x9c, 0x48, 0xb1, 0xdf, 0xf8, 0x0b, 0xe1, 0x68, 0x31, 0xc5, 0xa0, 0x38, - 0x5a, 0x5c, 0x06, 0x2c, 0x8e, 0x58, 0x94, 0x38, 0xd6, 0xc6, 0xd1, 0xe2, 0xfc, 0xbb, 0xb5, 0xfc, - 0x47, 0x8b, 0x01, 0x39, 0xe4, 0x21, 0x07, 0x01, 0x64, 0x44, 0xd9, 0x34, 0xfa, 0x75, 0xa9, 0xe4, - 0xc2, 0x3f, 0xe9, 0x41, 0x9f, 0x58, 0xad, 0xb6, 0x37, 0x8c, 0x2b, 0x9d, 0x77, 0x85, 0xf9, 0x56, - 0xb6, 0x92, 0xa9, 0x47, 0xeb, 0x86, 0xcb, 0x98, 0x6e, 0xed, 0x36, 0x5f, 0x81, 0x14, 0x77, 0x3f, - 0x23, 0xe6, 0xce, 0x85, 0xb1, 0x33, 0x62, 0xea, 0xcc, 0x18, 0x3a, 0x8f, 0x2b, 0x99, 0xdb, 0x65, - 0xcc, 0xeb, 0x1a, 0x92, 0xb9, 0x80, 0x64, 0xae, 0x1e, 0x85, 0x4b, 0xc7, 0xab, 0x4d, 0xb2, 0x62, - 0xd6, 0x8a, 0x61, 0xde, 0x5b, 0x8e, 0x1e, 0xee, 0xe9, 0xb1, 0x9f, 0xbf, 0xbc, 0xe4, 0xc2, 0x68, - 0xf9, 0x0a, 0x4c, 0x36, 0x50, 0x60, 0x12, 0x05, 0x26, 0xb7, 0xc1, 0x55, 0xbb, 0x34, 0x1c, 0xd3, - 0x08, 0x5c, 0xef, 0x31, 0x47, 0x55, 0xd4, 0xdc, 0x48, 0x6a, 0x8e, 0x1a, 0x1a, 0xdf, 0xab, 0xdc, - 0x7d, 0xe6, 0x12, 0x7b, 0xd5, 0xce, 0x31, 0xc6, 0x07, 0x67, 0x7c, 0x9f, 0x3d, 0xd3, 0x3e, 0xeb, - 0x72, 0x10, 0x16, 0x4d, 0x27, 0x2c, 0x96, 0x4e, 0x48, 0x5d, 0x47, 0x85, 0xb5, 0x4f, 0x3b, 0x47, - 0x5d, 0xed, 0xaf, 0x3b, 0xa5, 0x25, 0xbe, 0x96, 0xaf, 0xfd, 0xee, 0xb9, 0xe3, 0x91, 0x76, 0x79, - 0xf1, 0x8b, 0xa6, 0x6b, 0xd6, 0xf0, 0x3c, 0x54, 0xc5, 0x9f, 0xf2, 0x68, 0x62, 0x4e, 0xba, 0x87, - 0xb3, 0xde, 0xb9, 0x0c, 0xd5, 0x9d, 0x61, 0x19, 0x8a, 0xe6, 0x0c, 0x32, 0x7f, 0xba, 0x5f, 0xe2, - 0xea, 0xd8, 0x03, 0x77, 0x1c, 0xde, 0x7b, 0x02, 0xe7, 0x25, 0x19, 0x09, 0x95, 0xb1, 0xe1, 0xb8, - 0xec, 0x81, 0xe3, 0x92, 0xbb, 0x32, 0xb6, 0xe5, 0xe8, 0x5f, 0x3d, 0xd7, 0x30, 0x07, 0x86, 0x1f, - 0xe8, 0xa3, 0xbf, 0x03, 0x9f, 0xb2, 0x66, 0xdc, 0xf2, 0xd0, 0xe8, 0xfb, 0xc6, 0x2e, 0xb4, 0x12, - 0xc6, 0x1e, 0x41, 0xed, 0x8c, 0x9f, 0x2e, 0x5d, 0xdf, 0xb7, 0xd8, 0x5c, 0x76, 0xda, 0x84, 0xad, - 0xdf, 0x4e, 0xd1, 0xfa, 0x2d, 0xe5, 0xa0, 0xd3, 0x26, 0x62, 0xe8, 0xfb, 0x46, 0x24, 0x29, 0x4b, - 0xd8, 0x9e, 0xb1, 0xef, 0x5b, 0xf3, 0xb4, 0xdd, 0xee, 0x9c, 0xb4, 0xdb, 0x8d, 0x93, 0xa3, 0x93, - 0xc6, 0xd9, 0xf1, 0x71, 0xb3, 0xd3, 0x44, 0x07, 0x38, 0x1a, 0x6d, 0x49, 0x37, 0x0a, 0x3a, 0xc0, - 0x89, 0xea, 0xc8, 0x34, 0x24, 0xc7, 0x5c, 0x9b, 0x30, 0xcd, 0x1a, 0xfe, 0x7f, 0xbf, 0x5e, 0x38, - 0xbf, 0x4c, 0x5d, 0xc6, 0xab, 0xfc, 0x1e, 0x23, 0xa7, 0x43, 0x24, 0xc1, 0x82, 0xb0, 0xfb, 0x48, - 0x99, 0x59, 0x91, 0xd7, 0xd6, 0x0d, 0x3a, 0x84, 0x68, 0xfe, 0x7c, 0xb5, 0xc0, 0x75, 0xd3, 0xf2, - 0x07, 0x86, 0x67, 0xd2, 0xa2, 0xba, 0x64, 0x50, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, - 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0xb9, 0x7d, 0xc7, 0x73, 0x9a, 0x35, 0xbc, - 0x70, 0xde, 0xd3, 0xf8, 0x87, 0x40, 0x6f, 0x5c, 0xe8, 0x6d, 0x71, 0x95, 0xa0, 0x1f, 0xca, 0x81, - 0xd5, 0x94, 0xe7, 0xb9, 0x1e, 0x2d, 0x52, 0x8b, 0x87, 0x04, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, - 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x4e, 0x1b, 0x5e, 0x38, - 0x1f, 0x28, 0xbc, 0x43, 0xa0, 0x34, 0x56, 0x94, 0x16, 0xaf, 0x11, 0x74, 0x43, 0x39, 0x30, 0xda, - 0xfd, 0xd8, 0x0e, 0x2c, 0x9e, 0x5c, 0xc9, 0xa5, 0xa1, 0x81, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, - 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0xf6, 0x1d, 0xb3, 0xad, 0xe6, - 0xdc, 0x5d, 0x4e, 0x5d, 0x46, 0xe4, 0x4a, 0x96, 0x18, 0xc7, 0xbd, 0xb6, 0x6e, 0xd0, 0x21, 0xe5, - 0xc0, 0x76, 0xee, 0x20, 0x50, 0xc4, 0x98, 0x2e, 0x1e, 0x12, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, - 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x0e, 0x58, 0x6e, 0xdf, 0xb1, 0x5c, 0x0c, - 0x04, 0xfe, 0xa4, 0xf0, 0x0f, 0x81, 0xdc, 0xb8, 0x90, 0xdb, 0xe2, 0x2a, 0x41, 0x3f, 0x94, 0x03, - 0xa7, 0x8d, 0x1d, 0xa6, 0x08, 0xdc, 0xc2, 0xc0, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, - 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0xc0, 0x6c, 0x11, 0x1a, 0xf8, 0x27, - 0x02, 0x6e, 0xdb, 0x01, 0xdb, 0xfe, 0x89, 0x08, 0x5b, 0xe9, 0x90, 0xdb, 0xdf, 0x8e, 0xfb, 0x1f, - 0x47, 0x1f, 0x79, 0x6e, 0xe0, 0x52, 0x63, 0xb7, 0x85, 0xa1, 0x81, 0xde, 0x80, 0xde, 0x80, 0xde, - 0xca, 0x87, 0xde, 0x8e, 0x5a, 0x84, 0xe8, 0xed, 0x04, 0xe8, 0x0d, 0xe8, 0x6d, 0x5f, 0xd0, 0x5b, - 0xbb, 0x75, 0xd6, 0x3e, 0xeb, 0x9c, 0xb4, 0xce, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0xd2, 0x9c, - 0xa1, 0xfa, 0xe7, 0xc4, 0x37, 0xbc, 0xa2, 0x70, 0x0d, 0x81, 0xda, 0x18, 0x51, 0xdb, 0xf2, 0x52, - 0x41, 0x53, 0x94, 0x00, 0xb7, 0xd9, 0x86, 0x1f, 0xe8, 0x03, 0x5b, 0x19, 0x1e, 0x1d, 0x60, 0x9b, - 0x1b, 0x13, 0x48, 0x0d, 0x48, 0x0d, 0x48, 0xad, 0x44, 0x48, 0xcd, 0x34, 0x02, 0xa5, 0x1b, 0x8e, - 0xa9, 0x07, 0xd6, 0xbd, 0x22, 0x44, 0x6b, 0x4d, 0x8a, 0x60, 0xdb, 0x95, 0x11, 0x04, 0xca, 0x73, - 0xc8, 0xdc, 0x92, 0x4a, 0xaf, 0x67, 0x7e, 0x6f, 0x3f, 0xe9, 0xe1, 0x9f, 0xd6, 0xf4, 0xcf, 0x5f, - 0x93, 0x3f, 0xdd, 0x85, 0x3f, 0xd5, 0x5e, 0xaf, 0xde, 0xeb, 0x99, 0x3f, 0xd7, 0xde, 0x55, 0xff, - 0xef, 0x8f, 0x9b, 0x5e, 0xef, 0xe7, 0x5e, 0x4f, 0xef, 0x2f, 0xbc, 0xa3, 0x56, 0xd9, 0x4b, 0xfb, - 0xe0, 0x8e, 0x03, 0xb6, 0x16, 0x32, 0x6b, 0xc6, 0x86, 0xbd, 0x80, 0xbd, 0x80, 0xbd, 0x28, 0x1f, - 0xb3, 0x87, 0xbc, 0x0c, 0x30, 0x7b, 0x60, 0xf6, 0xb2, 0x2c, 0x19, 0xf2, 0x32, 0xc0, 0xf1, 0x81, - 0xe3, 0xcb, 0xce, 0xf1, 0x2d, 0x9f, 0xaf, 0xfd, 0x73, 0x1c, 0xa0, 0x89, 0xcc, 0x36, 0x30, 0x7e, - 0xaf, 0x2e, 0x1c, 0xb4, 0x48, 0x49, 0xf0, 0x1d, 0x7d, 0x1b, 0x99, 0x85, 0x51, 0x81, 0xe9, 0x80, - 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0x80, 0xe9, 0xf6, - 0x1d, 0xd3, 0x69, 0xd6, 0xf0, 0xcf, 0x71, 0x80, 0x46, 0x32, 0x25, 0x47, 0x70, 0x4b, 0xcb, 0x04, - 0x0d, 0x51, 0x12, 0xbc, 0x46, 0xdd, 0x4a, 0x66, 0x6e, 0x4c, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, - 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0x35, 0x60, 0xb5, 0x10, 0x04, - 0xa0, 0x99, 0xcc, 0x16, 0x20, 0x35, 0x74, 0x93, 0x29, 0x17, 0x4e, 0xe3, 0x6a, 0x27, 0xb3, 0x66, - 0x6c, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, - 0x36, 0xe0, 0xb6, 0x7d, 0xc7, 0x6d, 0x6b, 0xd2, 0xef, 0xd0, 0x50, 0x66, 0x1b, 0xb0, 0xdc, 0xab, - 0x0b, 0x07, 0x2d, 0x52, 0x12, 0x7c, 0x47, 0xdd, 0x52, 0x66, 0x6e, 0x4c, 0xe0, 0x39, 0xe0, 0x39, - 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0x39, 0xe0, 0xb9, 0x7d, 0xc7, - 0x73, 0x53, 0x2c, 0x80, 0xa6, 0x32, 0xa5, 0x46, 0x6f, 0x4b, 0xcb, 0x04, 0x0d, 0x51, 0x12, 0xac, - 0xc6, 0xd3, 0x56, 0x66, 0x65, 0x64, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, - 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0x36, 0xe0, 0xb6, 0x09, 0x20, 0x40, 0x63, 0x99, 0x6d, - 0x81, 0x6e, 0xe8, 0x2c, 0x43, 0x8f, 0xde, 0xde, 0x08, 0xea, 0x25, 0x4a, 0x7d, 0x44, 0xa8, 0x87, - 0x08, 0x9d, 0xda, 0x70, 0x37, 0x9f, 0xb4, 0x5a, 0x47, 0x9a, 0xae, 0x9d, 0x6b, 0xff, 0x3a, 0xff, - 0xe3, 0x77, 0xed, 0xbd, 0x11, 0x18, 0xda, 0xa5, 0x6b, 0x2a, 0x5b, 0x1b, 0xba, 0xde, 0x6c, 0x83, - 0xf7, 0x9c, 0x4b, 0xc3, 0x31, 0x6e, 0x55, 0x24, 0x07, 0xe5, 0xc6, 0x5c, 0xd4, 0x8a, 0x46, 0x06, - 0x76, 0x65, 0x5c, 0x8a, 0xa2, 0x71, 0xda, 0x1b, 0x59, 0x0d, 0x92, 0x55, 0x92, 0xcf, 0x1d, 0xc7, - 0x0d, 0x8c, 0xd0, 0x37, 0xcc, 0x27, 0xc5, 0xfe, 0xe0, 0x4e, 0xdd, 0x1b, 0x23, 0x23, 0xb8, 0x0b, - 0xd7, 0xec, 0xd0, 0x1d, 0x29, 0x67, 0x10, 0x71, 0x24, 0xba, 0x95, 0x98, 0x82, 0xc3, 0x75, 0x0f, - 0x0f, 0xfd, 0xf1, 0xd7, 0xb9, 0xd7, 0xe7, 0x9f, 0x1d, 0xfa, 0x81, 0x11, 0xa8, 0xc3, 0x18, 0x60, - 0xe6, 0x31, 0xeb, 0x15, 0x3f, 0xf0, 0xc6, 0x83, 0xc0, 0x89, 0xa5, 0x3b, 0xd9, 0x31, 0x5f, 0x3e, - 0xcd, 0x4d, 0xf7, 0xe5, 0xd7, 0xe9, 0x44, 0x6f, 0x64, 0x56, 0x3c, 0xc3, 0x9a, 0x55, 0x4c, 0xe5, - 0x0f, 0x3c, 0x6b, 0x94, 0x6b, 0xc1, 0x66, 0xa5, 0xaa, 0xe7, 0x06, 0xcb, 0xb8, 0x7f, 0xf2, 0xf1, - 0x69, 0xb9, 0x79, 0x34, 0x0a, 0xfe, 0x8c, 0x8c, 0x37, 0xa3, 0xd2, 0xdd, 0xe4, 0x3c, 0x19, 0xb9, - 0xa2, 0xa6, 0xe4, 0xc5, 0x64, 0x3d, 0x97, 0xdc, 0xfc, 0x57, 0xb2, 0x5b, 0xfc, 0xc0, 0xb3, 0x9c, - 0xdb, 0x3c, 0xdb, 0x25, 0x29, 0xec, 0x0e, 0xdf, 0x8d, 0xda, 0x77, 0xdb, 0x00, 0x89, 0x9c, 0xdb, - 0x96, 0xe1, 0xc3, 0x63, 0x63, 0xf2, 0xd8, 0x36, 0x5e, 0x80, 0x7d, 0xf3, 0xd3, 0x44, 0xbc, 0x04, - 0xe5, 0x84, 0xb2, 0x6d, 0xe6, 0xf7, 0x10, 0xa6, 0x03, 0x65, 0xd4, 0x35, 0xef, 0xd5, 0xd0, 0x18, - 0xdb, 0x41, 0x2e, 0xed, 0x50, 0x09, 0x77, 0x69, 0xb6, 0x6d, 0xd2, 0x87, 0x53, 0x03, 0xa7, 0x06, - 0x4e, 0x4d, 0x8a, 0xdd, 0xf2, 0xd5, 0x75, 0x6d, 0x65, 0x38, 0x14, 0x5e, 0x4d, 0x13, 0x5e, 0x4d, - 0x11, 0x5e, 0x8d, 0x79, 0x6f, 0x39, 0x9f, 0x02, 0x23, 0x18, 0xc3, 0xb7, 0x29, 0xd2, 0xb7, 0x99, - 0x5b, 0x06, 0x78, 0x38, 0x0c, 0x1e, 0x8e, 0x35, 0xb4, 0x1c, 0x53, 0x7d, 0xcb, 0xef, 0xe1, 0x4c, - 0x07, 0x82, 0xab, 0x00, 0x57, 0x01, 0xae, 0x42, 0x8a, 0xdd, 0x32, 0xb6, 0x9c, 0x20, 0x57, 0x3b, - 0x72, 0x82, 0x36, 0xe4, 0x44, 0x49, 0x3e, 0x04, 0x66, 0x9a, 0x32, 0xa9, 0x87, 0x3a, 0x99, 0x87, - 0x2d, 0xfd, 0x83, 0x3e, 0xed, 0x83, 0x20, 0x69, 0x87, 0x34, 0x59, 0x87, 0xad, 0x7d, 0xf8, 0x36, - 0xad, 0xc9, 0x5e, 0x04, 0xc2, 0xf6, 0x06, 0x40, 0x68, 0xfa, 0xb3, 0xae, 0x2b, 0x10, 0x03, 0x23, - 0x62, 0x78, 0xe9, 0xbe, 0x03, 0x22, 0x70, 0x40, 0x04, 0x22, 0x80, 0x90, 0x07, 0x1e, 0x90, 0x10, - 0xa0, 0x0d, 0xb0, 0x9f, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, 0x80, 0x34, - 0xfb, 0x07, 0x69, 0x44, 0xdc, 0x25, 0xdb, 0xf0, 0x03, 0x7d, 0x70, 0x17, 0x6b, 0x9f, 0x9c, 0x4e, - 0xd3, 0xfc, 0x60, 0x70, 0x43, 0xe0, 0x86, 0xc0, 0x0d, 0x49, 0xb1, 0x5b, 0x02, 0xeb, 0x5e, 0x05, - 0xd6, 0xe0, 0x6f, 0x1f, 0x9e, 0x08, 0x3c, 0x11, 0x78, 0x22, 0xf0, 0x44, 0xca, 0xe3, 0x89, 0x80, - 0x5c, 0x5d, 0xaf, 0xb2, 0x37, 0x4c, 0x0b, 0xf8, 0x68, 0xf8, 0xc1, 0xaf, 0x79, 0xbc, 0x22, 0x0e, - 0xa7, 0x60, 0x9d, 0x73, 0xb0, 0xd3, 0xc9, 0x19, 0x73, 0xab, 0x00, 0x24, 0xc1, 0x80, 0x24, 0xe2, - 0x63, 0x36, 0x39, 0x21, 0x44, 0x34, 0x0a, 0xb0, 0x03, 0xb0, 0x03, 0xb0, 0x43, 0x8a, 0xdd, 0x82, - 0x53, 0x29, 0x25, 0x3f, 0x51, 0xdc, 0x7d, 0xed, 0x14, 0xab, 0x86, 0xf3, 0xc4, 0x22, 0xe7, 0x89, - 0x53, 0x2d, 0x04, 0xfc, 0x04, 0x06, 0x3f, 0xc1, 0x1d, 0x29, 0x4f, 0xf7, 0x27, 0x49, 0xb2, 0xb9, - 0xdd, 0x85, 0xf9, 0xc1, 0xe0, 0x35, 0xc0, 0x6b, 0xd8, 0x03, 0xaf, 0xe1, 0xd2, 0x70, 0x4c, 0x23, - 0x70, 0xbd, 0xc7, 0xd0, 0x5c, 0x17, 0xee, 0x79, 0x28, 0x67, 0x7c, 0xaf, 0x3c, 0x23, 0xc7, 0x61, - 0xf2, 0x05, 0xf7, 0xa3, 0x9d, 0x63, 0x8c, 0x0f, 0xce, 0xf8, 0x3e, 0xfc, 0x52, 0x28, 0x8a, 0x52, - 0x04, 0xc9, 0xf1, 0xe7, 0x48, 0x79, 0x38, 0x81, 0x52, 0x34, 0xc9, 0x31, 0xb7, 0x0a, 0x70, 0x5e, - 0x48, 0x3f, 0x91, 0x52, 0x3f, 0xe4, 0x2d, 0xb1, 0xc2, 0x58, 0x5a, 0x25, 0xdd, 0xce, 0xd8, 0xfc, - 0x2e, 0xa5, 0xb8, 0x43, 0x95, 0x07, 0xdb, 0x48, 0x7f, 0x5f, 0x12, 0x95, 0x14, 0x7d, 0x3a, 0xe5, - 0x7a, 0x4c, 0x2d, 0x4c, 0xca, 0x8f, 0x65, 0x75, 0xef, 0xf2, 0xb8, 0x75, 0xf3, 0xee, 0x5c, 0x86, - 0xaf, 0x4a, 0xa1, 0x40, 0xc9, 0x1c, 0x38, 0x32, 0xed, 0xb8, 0xec, 0xb0, 0x45, 0x37, 0xa6, 0x64, - 0x32, 0xff, 0xde, 0xf2, 0xb2, 0x2d, 0xf8, 0x60, 0xba, 0xcb, 0x72, 0xc2, 0xa1, 0x78, 0x9c, 0x7c, - 0x48, 0xa8, 0xb9, 0x23, 0x48, 0x28, 0xa3, 0xe8, 0x00, 0x0b, 0x65, 0x13, 0xad, 0x62, 0xd0, 0x50, - 0x56, 0x91, 0x5b, 0xb0, 0x44, 0xba, 0x65, 0xd2, 0xd5, 0xae, 0x9f, 0x0e, 0x88, 0x92, 0xf5, 0x02, - 0x42, 0x2a, 0x01, 0x18, 0xb6, 0xb3, 0x68, 0x7d, 0x3e, 0x21, 0x26, 0xc2, 0x00, 0xa5, 0x2b, 0x5b, - 0x3f, 0x76, 0xf2, 0x11, 0x15, 0x2b, 0xb6, 0xf2, 0x8c, 0x60, 0xac, 0xf8, 0x6b, 0x96, 0xb6, 0x1c, - 0x33, 0x8d, 0x46, 0x5b, 0x77, 0xfb, 0x3a, 0x84, 0x43, 0xd2, 0x56, 0xfe, 0xa7, 0xbf, 0x9d, 0x33, - 0x02, 0x8f, 0xa1, 0x13, 0x40, 0x32, 0x78, 0x52, 0x5e, 0xfe, 0x80, 0x67, 0x7c, 0xee, 0x9a, 0xf2, - 0xb3, 0xcd, 0xc7, 0x55, 0x5b, 0x9e, 0x48, 0x39, 0xad, 0x5f, 0x5a, 0x86, 0x8e, 0x01, 0x2b, 0x4b, - 0xdb, 0x6e, 0x9c, 0xb5, 0xb1, 0xba, 0xac, 0x86, 0x8b, 0x6f, 0xb4, 0xfe, 0x9b, 0x12, 0xed, 0x5d, - 0x06, 0x5b, 0xf1, 0xbf, 0x96, 0xf3, 0xbf, 0x3c, 0xb6, 0xa2, 0x79, 0x4a, 0x38, 0xe6, 0x95, 0x11, - 0x04, 0xca, 0x73, 0xc8, 0xcd, 0x45, 0xa5, 0xda, 0x6e, 0x9c, 0xdd, 0x34, 0xf4, 0x76, 0xff, 0x47, - 0xbb, 0x71, 0xd3, 0xd0, 0x4f, 0xfb, 0x37, 0x0d, 0xfd, 0xac, 0xff, 0xe3, 0xa6, 0xa9, 0x1f, 0x4d, - 0x1e, 0x7e, 0x3f, 0x7a, 0x0a, 0x9f, 0x9d, 0xc5, 0xcf, 0x9a, 0x07, 0xad, 0xf8, 0x79, 0xad, 0xd7, - 0xab, 0x57, 0x73, 0x7c, 0xfc, 0x47, 0xaf, 0xf7, 0xb6, 0x56, 0x29, 0xdb, 0x46, 0xdd, 0xf2, 0x16, - 0x1c, 0x44, 0x85, 0xb2, 0x93, 0xf1, 0x1e, 0x6f, 0xdd, 0x40, 0x77, 0x07, 0xfa, 0xc0, 0xbd, 0x1f, - 0x79, 0xca, 0xf7, 0x95, 0xa9, 0xdb, 0xca, 0x18, 0x66, 0x0f, 0x5b, 0xe5, 0xbf, 0xd1, 0x4f, 0xa8, - 0x3c, 0x3e, 0xfd, 0x57, 0xe8, 0xe8, 0x1e, 0xc6, 0x1c, 0x5a, 0x89, 0x33, 0x28, 0x26, 0x2c, 0x7e, - 0x6e, 0xb2, 0x70, 0x32, 0x4c, 0xc1, 0x5c, 0x61, 0x0b, 0x5c, 0x21, 0xb8, 0x42, 0x70, 0x85, 0xe0, - 0x0a, 0xc1, 0x15, 0x82, 0x2b, 0x04, 0x57, 0x08, 0xae, 0x10, 0x5c, 0x21, 0xb8, 0x42, 0x70, 0x85, - 0xe0, 0x0a, 0xc1, 0x15, 0x82, 0x2b, 0x04, 0x57, 0x08, 0xae, 0x50, 0x90, 0x2b, 0x04, 0x85, 0x46, - 0x44, 0xa1, 0x65, 0x48, 0x33, 0xcd, 0xc1, 0xa0, 0xed, 0x5f, 0x1a, 0x6f, 0xd6, 0xa4, 0xd0, 0x8d, - 0xfa, 0x21, 0x7e, 0x4e, 0x0d, 0x06, 0x53, 0xa4, 0x08, 0xbf, 0x21, 0x5c, 0xa3, 0x10, 0x77, 0xa7, - 0x2d, 0xd5, 0x59, 0xf9, 0x68, 0xf9, 0xc1, 0x79, 0x10, 0xa4, 0x23, 0x82, 0x42, 0x37, 0xfc, 0x83, - 0x1d, 0x9d, 0x09, 0x4c, 0xe9, 0xe8, 0x84, 0x5e, 0xde, 0xdc, 0x27, 0xf3, 0x35, 0x7d, 0xaf, 0xfc, - 0xe9, 0x99, 0xca, 0x53, 0xe6, 0x2f, 0xe1, 0xd7, 0x76, 0xc6, 0xb6, 0x4d, 0x7a, 0x37, 0xcf, 0xc7, - 0xb7, 0xe1, 0x65, 0x46, 0xfd, 0xa3, 0x36, 0x37, 0x74, 0x19, 0x33, 0xb8, 0x0f, 0xa3, 0x23, 0x57, - 0xdd, 0xb9, 0x0d, 0xbe, 0xf4, 0x42, 0xfc, 0x7c, 0x51, 0x08, 0x56, 0x5f, 0x4b, 0x9b, 0x05, 0xfe, - 0x7e, 0xa1, 0x91, 0x66, 0xe5, 0xdc, 0x34, 0x7d, 0xed, 0xf3, 0xc7, 0xf3, 0x3f, 0x34, 0x5f, 0x05, - 0x81, 0xe5, 0xdc, 0xfa, 0x5a, 0xe0, 0x6a, 0x96, 0x63, 0x5a, 0x0f, 0x96, 0x39, 0x36, 0x6c, 0x6d, - 0x61, 0x7e, 0xa4, 0x9c, 0x73, 0xd2, 0x6a, 0x48, 0x39, 0xd7, 0x24, 0x53, 0xce, 0x33, 0x9d, 0xc0, - 0x58, 0x4b, 0xf7, 0x64, 0xaf, 0x92, 0xbc, 0x20, 0x8b, 0x1f, 0x9c, 0x81, 0xed, 0xfa, 0x96, 0x73, - 0xab, 0x0d, 0x5c, 0x27, 0x30, 0x2c, 0x47, 0x79, 0xd1, 0xc9, 0xec, 0x48, 0x3c, 0x13, 0x21, 0xd4, - 0xfd, 0x91, 0x1a, 0x58, 0x43, 0x6b, 0xd0, 0x73, 0x4c, 0x23, 0x30, 0x34, 0xd7, 0xc9, 0x25, 0xa3, - 0x39, 0x65, 0x35, 0xb7, 0xcc, 0x52, 0xc8, 0x2e, 0xa1, 0x0c, 0x53, 0xc9, 0x32, 0xb9, 0x4c, 0x93, - 0xcb, 0x36, 0xad, 0x8c, 0xe7, 0x04, 0x02, 0xdc, 0x3a, 0x85, 0xe3, 0x08, 0xd7, 0x76, 0x1b, 0xfe, - 0x8b, 0xab, 0x87, 0xb6, 0x66, 0x98, 0xa6, 0xa7, 0x0d, 0x8d, 0x7b, 0xcb, 0x7e, 0xd4, 0x26, 0x4e, - 0xf9, 0x78, 0x72, 0x92, 0x39, 0xd4, 0x3b, 0x3d, 0x67, 0xef, 0x0c, 0xbf, 0x35, 0x82, 0xd9, 0x5f, - 0x57, 0x1a, 0x60, 0xb4, 0x33, 0x46, 0xdf, 0x1a, 0x3d, 0xb4, 0x09, 0x7a, 0x23, 0x84, 0xa3, 0xd0, - 0x18, 0xfd, 0x2b, 0xc3, 0x33, 0xee, 0x55, 0xa0, 0x3c, 0x3f, 0xb2, 0xf5, 0xc1, 0x9d, 0xd2, 0x12, - 0xd1, 0x54, 0xbe, 0x1f, 0x4b, 0x67, 0x1d, 0x56, 0x3d, 0xbb, 0x80, 0xc2, 0xa6, 0x67, 0x11, 0x60, - 0x58, 0xf4, 0xed, 0xb3, 0xe8, 0x1d, 0x58, 0x74, 0x58, 0xf4, 0xfd, 0xb3, 0xe8, 0x1d, 0x12, 0x8b, - 0xde, 0x61, 0xb5, 0xe8, 0x1d, 0x58, 0x74, 0x58, 0x74, 0x58, 0x74, 0x12, 0x8b, 0xbe, 0xd1, 0x3b, - 0xfb, 0x9b, 0xb2, 0xfe, 0xd9, 0xe2, 0x5b, 0x2c, 0x71, 0xad, 0x14, 0xbb, 0x6e, 0xa3, 0x50, 0xd6, - 0x66, 0x7b, 0xe4, 0xf5, 0xfb, 0xf9, 0xf2, 0x3b, 0x5e, 0x51, 0xf5, 0x69, 0xef, 0x30, 0xd5, 0x9d, - 0x7d, 0xf9, 0xcb, 0x3f, 0xff, 0x95, 0xd6, 0xff, 0xe7, 0x99, 0x2f, 0x39, 0x0d, 0xc1, 0xbd, 0x50, - 0xb5, 0x79, 0xb3, 0x88, 0xdb, 0xe6, 0x11, 0xb6, 0x5c, 0x11, 0xb5, 0xcd, 0x22, 0x68, 0xcf, 0x7d, - 0xd9, 0xcd, 0x22, 0x64, 0x2f, 0x2f, 0xf1, 0xe6, 0x6e, 0xf3, 0x2b, 0xd2, 0xb0, 0x36, 0x94, 0xf5, - 0xf1, 0xfc, 0xf7, 0x25, 0xbf, 0x37, 0x70, 0x23, 0x13, 0x9c, 0x8c, 0xaa, 0xdd, 0xbb, 0xe6, 0xd8, - 0x7e, 0x75, 0xf0, 0xcd, 0xcc, 0xec, 0xc6, 0xe6, 0x34, 0x8d, 0xd9, 0x9c, 0x37, 0x8f, 0xb6, 0xb1, - 0x49, 0x31, 0x9b, 0xb4, 0x76, 0x30, 0xb3, 0xbd, 0xcb, 0x6c, 0xd7, 0x96, 0xed, 0x57, 0xf8, 0xbd, - 0x98, 0xd5, 0xce, 0xa6, 0x1e, 0x65, 0xc5, 0xb8, 0xbd, 0xf5, 0xa2, 0x0c, 0xbb, 0x14, 0x26, 0x20, - 0x59, 0xa3, 0xf9, 0x0f, 0x6f, 0x78, 0x2b, 0x96, 0xf6, 0xed, 0x9f, 0xd1, 0xa3, 0x89, 0xb3, 0x68, - 0xbb, 0xb7, 0xd6, 0xc0, 0xb0, 0x67, 0xbb, 0xd5, 0xd7, 0x3c, 0x35, 0xf2, 0x94, 0xaf, 0x9c, 0xc0, - 0x72, 0x6e, 0x7b, 0xce, 0x74, 0xba, 0x8d, 0x01, 0x5c, 0x4a, 0x7f, 0x31, 0xb5, 0x7f, 0x98, 0xc5, - 0x1f, 0x4c, 0xbf, 0xc1, 0xf3, 0x3a, 0x7c, 0xb9, 0x1d, 0xbc, 0xdc, 0x0e, 0x5d, 0x26, 0x01, 0x48, - 0xe7, 0xf1, 0x70, 0xdb, 0xf1, 0x0c, 0x85, 0x3e, 0x2b, 0xff, 0xb9, 0x53, 0x9b, 0xe7, 0x0d, 0x66, - 0xdb, 0x41, 0xd6, 0xb0, 0x1b, 0x3c, 0x8e, 0x94, 0xf6, 0x0f, 0xed, 0x7f, 0xac, 0x61, 0xd0, 0xb5, - 0x94, 0x52, 0xa7, 0x8d, 0xd6, 0x91, 0x61, 0x7e, 0x34, 0x6e, 0xff, 0x47, 0x78, 0x6f, 0x45, 0x5f, - 0xb7, 0xe0, 0x9d, 0xf5, 0xf2, 0xfd, 0x60, 0x29, 0x66, 0xb8, 0xa8, 0xd1, 0x32, 0xd2, 0x68, 0xc6, - 0x20, 0xb0, 0x1e, 0x94, 0x16, 0xde, 0xc2, 0x25, 0x8b, 0x6d, 0xf9, 0x9a, 0xaf, 0x82, 0xc8, 0x92, - 0x87, 0x5f, 0xec, 0xe3, 0xf9, 0xef, 0x69, 0xef, 0x71, 0x0e, 0x9c, 0x38, 0xbf, 0xbc, 0xe6, 0xdc, - 0xf7, 0xcc, 0x40, 0x2b, 0x51, 0x80, 0xc2, 0x85, 0xd5, 0x4e, 0x75, 0xcb, 0x8a, 0xcd, 0x68, 0x7b, - 0xf5, 0x5d, 0xfd, 0xac, 0xee, 0xfa, 0x41, 0x29, 0x1d, 0xd1, 0x45, 0x27, 0xd4, 0x70, 0x4c, 0x2d, - 0xca, 0x09, 0x8d, 0xac, 0xbc, 0xe7, 0x8e, 0x03, 0x65, 0x2e, 0xe5, 0x75, 0xf8, 0x5b, 0xe2, 0x91, - 0x6e, 0x98, 0x58, 0xb1, 0x7d, 0x2e, 0xe9, 0x66, 0x89, 0x0f, 0x42, 0x3e, 0xe9, 0x64, 0x8b, 0xe8, - 0xa9, 0x72, 0x94, 0x92, 0x55, 0x9a, 0xff, 0x70, 0x36, 0x9f, 0xf4, 0x2f, 0x77, 0xa4, 0xdb, 0xea, - 0x41, 0xd9, 0x4b, 0xa9, 0x48, 0xf1, 0xce, 0x0d, 0x47, 0x9e, 0xdb, 0xb9, 0x75, 0x4d, 0xfb, 0xeb, - 0x4e, 0xf9, 0xaa, 0xe7, 0xac, 0xf1, 0x5f, 0x0d, 0x4f, 0x69, 0x86, 0xed, 0xbb, 0xda, 0xdf, 0x8e, - 0xfb, 0x1f, 0x47, 0x33, 0x7c, 0xed, 0xd3, 0xe7, 0x0b, 0xad, 0xea, 0xff, 0xc7, 0x0a, 0x06, 0x77, - 0xe1, 0x58, 0x96, 0x17, 0x8c, 0x0d, 0x7b, 0x2e, 0x36, 0x51, 0x3b, 0xd0, 0x2e, 0xae, 0x7f, 0xd1, - 0xaa, 0xe1, 0x0b, 0xb7, 0x9e, 0x11, 0x4e, 0x18, 0xce, 0x6b, 0x39, 0xb7, 0x91, 0x1c, 0x7d, 0xf5, - 0x2c, 0xf3, 0xd6, 0x72, 0x6e, 0x6b, 0x07, 0xda, 0xf5, 0xe7, 0x8b, 0x9e, 0x53, 0x5d, 0x2b, 0x4e, - 0xb5, 0x1d, 0xf1, 0x8f, 0x53, 0xe6, 0x31, 0xed, 0x8e, 0x83, 0x9c, 0x2e, 0x0f, 0x09, 0x1e, 0xf2, - 0xe6, 0x1e, 0xb2, 0x7d, 0x64, 0x8d, 0xc2, 0xbb, 0x0b, 0xe7, 0x78, 0xee, 0x56, 0x94, 0xd7, 0x2f, - 0x3e, 0x7f, 0xc9, 0xc9, 0x33, 0x56, 0x29, 0x03, 0x6d, 0xe4, 0xb9, 0x0f, 0x96, 0x19, 0xd1, 0x05, - 0x1f, 0x8f, 0x12, 0xd5, 0x39, 0xcd, 0x24, 0xf5, 0xe1, 0x3b, 0x07, 0x2c, 0xb7, 0x15, 0xfe, 0xb5, - 0xa4, 0x7f, 0x6d, 0x98, 0x66, 0xf8, 0xdc, 0xb0, 0xb5, 0x0f, 0xc1, 0x9d, 0xf2, 0x1c, 0x15, 0x24, - 0x89, 0xd1, 0x2b, 0x04, 0xf0, 0x7c, 0xde, 0x83, 0x76, 0xef, 0x9a, 0xca, 0xde, 0x12, 0x5f, 0x5b, - 0x05, 0x77, 0x3b, 0xe9, 0x6a, 0x87, 0xdf, 0xab, 0x2c, 0x9e, 0xb6, 0x8a, 0xb7, 0x4f, 0x7a, 0x37, - 0x3b, 0xf9, 0x24, 0xad, 0x8f, 0x3d, 0x1d, 0x76, 0x71, 0x1b, 0xf7, 0x9c, 0x04, 0x43, 0xee, 0x88, - 0x67, 0xbb, 0xd9, 0xe6, 0xde, 0x3d, 0xc7, 0x76, 0xa3, 0xcd, 0x2f, 0xec, 0xd7, 0xa6, 0x0c, 0x86, - 0xf6, 0x9f, 0x8b, 0x0f, 0x6e, 0x16, 0xe9, 0xcd, 0x1e, 0xe1, 0x7d, 0x61, 0xed, 0x9e, 0x0b, 0x88, - 0xaf, 0xbf, 0xd7, 0xab, 0xdf, 0x6b, 0xf1, 0x95, 0x25, 0xf5, 0xf2, 0xda, 0x37, 0x4b, 0xfb, 0x8d, - 0x16, 0x2f, 0x6a, 0x36, 0xf5, 0xdc, 0xb4, 0xd1, 0xc9, 0xa2, 0xd5, 0x06, 0x81, 0x0b, 0x07, 0x8f, - 0x96, 0x7d, 0xb9, 0x67, 0x44, 0xfe, 0x59, 0xd1, 0x7e, 0x49, 0x84, 0x37, 0x00, 0xa1, 0xaf, 0xc9, - 0xe4, 0xc6, 0xb2, 0xb7, 0xb1, 0x8c, 0x6d, 0x06, 0x12, 0x5f, 0x5e, 0xca, 0xe7, 0x2c, 0xc3, 0xcb, - 0x07, 0xc2, 0x36, 0x39, 0xf0, 0xf5, 0x8a, 0xc6, 0x7d, 0x55, 0xc3, 0x6e, 0xa2, 0x51, 0x53, 0x70, - 0x03, 0x9b, 0xaa, 0xcc, 0xd4, 0x2a, 0x32, 0xb5, 0x4a, 0x4c, 0x87, 0xed, 0xd3, 0x25, 0x60, 0xbc, - 0x66, 0xe8, 0x37, 0x6d, 0x2d, 0x93, 0xae, 0x85, 0x0c, 0xd8, 0xd8, 0x7d, 0x62, 0x63, 0x53, 0x75, - 0x76, 0xcf, 0xd2, 0xc9, 0x3d, 0x65, 0x01, 0x43, 0xb0, 0x90, 0x5b, 0xcd, 0x42, 0x6e, 0xb8, 0x66, - 0xa9, 0x0b, 0xfa, 0x65, 0xef, 0x86, 0x9e, 0xb2, 0xfb, 0xf9, 0x13, 0x73, 0x6e, 0x65, 0xee, 0x22, - 0xd1, 0x1b, 0x38, 0xc4, 0x1b, 0x28, 0xcd, 0x94, 0x3d, 0x9a, 0x17, 0xea, 0x0a, 0x6f, 0xdc, 0x05, - 0xb4, 0xf2, 0x5e, 0x0d, 0x8d, 0xb1, 0x1d, 0xa4, 0x2a, 0x3a, 0x51, 0x39, 0xff, 0xf5, 0xaf, 0x8b, - 0xcf, 0x1f, 0x2a, 0xa4, 0x99, 0xb0, 0xd0, 0x41, 0xd0, 0x41, 0x74, 0x3a, 0x28, 0x5b, 0x5f, 0xe4, - 0x2c, 0x7d, 0x90, 0x53, 0xf6, 0x3d, 0xde, 0x13, 0xe5, 0x15, 0x8c, 0x52, 0xd4, 0x69, 0x4e, 0x56, - 0x2d, 0xfa, 0x14, 0xa7, 0xe2, 0x8a, 0xf7, 0xb3, 0x1e, 0x3c, 0x8e, 0x94, 0xdf, 0xfd, 0xeb, 0xea, - 0xe2, 0xfd, 0x97, 0xc6, 0xb7, 0xd3, 0x66, 0xa3, 0x01, 0x5d, 0x06, 0x5d, 0x56, 0x56, 0x5d, 0x66, - 0x99, 0xca, 0x09, 0xac, 0xe0, 0xd1, 0x53, 0xc3, 0x2c, 0xba, 0x2c, 0x4d, 0x85, 0xab, 0x8b, 0x78, - 0xaa, 0x5f, 0x0c, 0x5f, 0x65, 0x8f, 0x19, 0x46, 0x72, 0xf5, 0xd7, 0xbf, 0xae, 0x3e, 0x7c, 0x4a, - 0xbb, 0xe0, 0x51, 0xdd, 0x54, 0x3f, 0x53, 0xa9, 0xc7, 0x9c, 0x47, 0xf0, 0x26, 0xba, 0xe0, 0xff, - 0x9c, 0xb5, 0x36, 0xd5, 0x05, 0x19, 0xf6, 0x00, 0xf9, 0xe5, 0x7e, 0x3b, 0x3d, 0x3f, 0x3d, 0xdd, - 0xa6, 0xcb, 0x6d, 0x6e, 0xd5, 0xdd, 0x3d, 0xcb, 0x76, 0xb9, 0xa9, 0x3e, 0xd1, 0x2f, 0x48, 0x1d, - 0x6d, 0xb9, 0x7f, 0x91, 0xb6, 0x15, 0x44, 0xc6, 0x02, 0xe9, 0xb0, 0xe4, 0xb0, 0xe4, 0x84, 0x96, - 0x3c, 0x7d, 0x75, 0xfe, 0x0c, 0xd5, 0xf7, 0x33, 0x56, 0xd7, 0xcf, 0x90, 0x5f, 0x93, 0xa7, 0x3a, - 0x7e, 0xde, 0xea, 0xf7, 0x64, 0xf5, 0xcf, 0xf3, 0xd7, 0x37, 0xcf, 0xd2, 0x43, 0x2a, 0x4f, 0xf5, - 0x79, 0x82, 0xea, 0xf2, 0x65, 0xba, 0x7b, 0x4c, 0x99, 0x4b, 0xfd, 0xbd, 0x31, 0x97, 0x25, 0x39, - 0x1e, 0x1d, 0x95, 0x9e, 0x8e, 0xe2, 0xc2, 0x9b, 0x37, 0x72, 0xcb, 0x94, 0xf8, 0x55, 0xb9, 0x57, - 0xf7, 0x5f, 0x95, 0xe7, 0x6f, 0x1e, 0x54, 0x9b, 0x7e, 0x00, 0x51, 0x35, 0x44, 0xd5, 0x16, 0x37, - 0x51, 0x7a, 0x07, 0x32, 0xfe, 0x1c, 0x73, 0x16, 0x54, 0x0b, 0xfe, 0xe3, 0xce, 0xfa, 0x8f, 0x69, - 0x8b, 0x0d, 0x55, 0x66, 0xd5, 0x77, 0x3d, 0x35, 0xcc, 0x4e, 0xcb, 0x2c, 0x0e, 0xb3, 0x27, 0x15, - 0xb8, 0x86, 0xa8, 0xc0, 0xb5, 0xf6, 0x20, 0xc2, 0xce, 0x54, 0xe0, 0x42, 0x37, 0x56, 0xfa, 0xaa, - 0x58, 0x43, 0x54, 0xc5, 0x12, 0x12, 0xaa, 0x6c, 0xc2, 0x95, 0x03, 0x79, 0x6a, 0x24, 0x9d, 0x58, - 0x67, 0x29, 0xb1, 0x64, 0xbd, 0x58, 0xb3, 0x16, 0xa2, 0xcc, 0x49, 0xd9, 0x91, 0x5b, 0x2e, 0x0e, - 0xe1, 0x24, 0x17, 0x52, 0x6a, 0x61, 0x65, 0x13, 0x5a, 0x36, 0xe1, 0xe5, 0x10, 0xe2, 0x7c, 0xc2, - 0x9c, 0x53, 0xa8, 0xb3, 0xd3, 0x93, 0xaf, 0xee, 0x36, 0x5b, 0x19, 0xc3, 0xf4, 0x2e, 0xe3, 0x8b, - 0x96, 0xf2, 0x84, 0x60, 0xac, 0xab, 0x84, 0x84, 0xd8, 0xac, 0x02, 0x6e, 0x94, 0x11, 0x59, 0x54, - 0x8b, 0xb2, 0x1c, 0x06, 0x75, 0xa1, 0x46, 0x1f, 0x99, 0xbe, 0xcd, 0x51, 0xfb, 0x17, 0x2a, 0x17, - 0x2a, 0x17, 0x2a, 0x17, 0x2a, 0xf7, 0x05, 0x95, 0x7b, 0x33, 0x53, 0xb9, 0xff, 0x18, 0x8c, 0x3d, - 0x4f, 0x39, 0x41, 0xb5, 0x76, 0x58, 0xaf, 0xcf, 0x4e, 0x21, 0xf5, 0x37, 0xac, 0x4b, 0x9e, 0x8c, - 0x6c, 0xaa, 0x6f, 0x15, 0x34, 0x98, 0x4c, 0x63, 0x37, 0x36, 0xa6, 0xea, 0x63, 0x7e, 0x3c, 0xfe, - 0x7b, 0xb8, 0x40, 0x14, 0xa1, 0x9b, 0x24, 0xf5, 0x1d, 0xcd, 0xdf, 0x3a, 0xf2, 0xb3, 0x6d, 0x38, - 0x5f, 0x2e, 0xa3, 0xa1, 0xbf, 0x24, 0x47, 0x0d, 0xaf, 0xd5, 0x70, 0x3b, 0xfa, 0x46, 0xa2, 0x07, - 0x24, 0xf1, 0xfe, 0xcc, 0xbc, 0x2f, 0xb3, 0x57, 0x7c, 0x9e, 0xdb, 0x81, 0x95, 0x1d, 0x8f, 0x63, - 0x4e, 0x83, 0x87, 0x0c, 0x81, 0xcc, 0xcd, 0xb8, 0xcb, 0x54, 0x1c, 0x65, 0xea, 0x20, 0x66, 0x0b, - 0x41, 0xcc, 0x54, 0xde, 0x2a, 0x8e, 0x06, 0x52, 0x42, 0x38, 0x04, 0x30, 0x33, 0x82, 0x26, 0x1c, - 0x0d, 0xcc, 0x68, 0x65, 0x70, 0xf2, 0x0e, 0x22, 0x0e, 0x11, 0xe7, 0x13, 0xf1, 0xf2, 0x9e, 0xbc, - 0xc3, 0xc1, 0x36, 0xa8, 0x0a, 0xa8, 0x0a, 0x1c, 0x6c, 0xc3, 0xc1, 0x36, 0x4e, 0x0a, 0x13, 0x07, - 0xdb, 0xca, 0x7f, 0xb9, 0x5b, 0x79, 0xb0, 0x0d, 0xe7, 0xc6, 0x60, 0x28, 0x71, 0x6e, 0x2c, 0xa5, - 0x91, 0xc4, 0xb9, 0xb1, 0xe5, 0xcf, 0xe3, 0xdc, 0x18, 0xce, 0x8d, 0xe5, 0xb7, 0x5b, 0xdb, 0x1b, - 0xce, 0xd8, 0x20, 0x9c, 0x9b, 0x2d, 0x98, 0xb1, 0xa9, 0x69, 0x4d, 0xa9, 0xd5, 0x36, 0x34, 0xa5, - 0x38, 0x95, 0x55, 0xe6, 0x80, 0xc6, 0xc6, 0xa6, 0x2f, 0x43, 0x02, 0x4c, 0x9a, 0x04, 0x97, 0x24, - 0x81, 0xa5, 0x5e, 0x8f, 0xcf, 0x27, 0x1e, 0x4e, 0x77, 0xa1, 0x64, 0xbf, 0xd6, 0x97, 0x77, 0xfe, - 0x2e, 0xb5, 0x6c, 0xcd, 0x5d, 0x92, 0x79, 0x49, 0x7d, 0x6d, 0x5e, 0x82, 0xf9, 0xf3, 0xb3, 0xdb, - 0x5a, 0xae, 0xfa, 0xf2, 0xec, 0xe2, 0x9f, 0x2d, 0xb9, 0xfc, 0x66, 0x6e, 0xc6, 0xe7, 0x66, 0xaa, - 0x58, 0xfe, 0xaf, 0xc9, 0xf9, 0xe1, 0x4f, 0xd1, 0x6c, 0x2b, 0x12, 0x5f, 0xb1, 0xfc, 0xdf, 0x8c, - 0xbf, 0xd5, 0xb5, 0xeb, 0xae, 0x6a, 0x83, 0xe5, 0x2b, 0xac, 0xcc, 0xff, 0x6b, 0xe1, 0xa6, 0xbd, - 0x57, 0x0f, 0xd6, 0xb4, 0x68, 0xf5, 0xd3, 0x9b, 0xa7, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x9d, 0x17, 0xcc, 0x09, 0x40, 0x89, 0x13, 0x00, - } -) - -// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that -// correspond with the leaf. The type is represented as a reflect.Type. The naming -// of the map ensures that there are no clashes with valid YANG identifiers. -func initΛEnumTypes() { - ΛEnumTypes = map[string][]reflect.Type{ - "/interfaces/interface/aggregation/config/lag-type": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfAggregate_AggregationType)(0)), - }, - "/interfaces/interface/aggregation/switched-vlan/config/interface-mode": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_VlanModeType)(0)), - }, - "/interfaces/interface/config/type": []reflect.Type{ - reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), - }, - "/interfaces/interface/ethernet/config/duplex-mode": []reflect.Type{ - reflect.TypeOf((E_Ethernet_DuplexMode)(0)), - }, - "/interfaces/interface/ethernet/config/port-speed": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), - }, - "/interfaces/interface/ethernet/state/negotiated-duplex-mode": []reflect.Type{ - reflect.TypeOf((E_Ethernet_NegotiatedDuplexMode)(0)), - }, - "/interfaces/interface/ethernet/state/negotiated-port-speed": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), - }, - "/interfaces/interface/ethernet/switched-vlan/config/interface-mode": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_VlanModeType)(0)), - }, - "/interfaces/interface/routed-vlan/ipv4/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/status": []reflect.Type{ - reflect.TypeOf((E_Address_Status)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ - reflect.TypeOf((E_Neighbor_NeighborState)(0)), - }, - "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/state/admin-status": []reflect.Type{ - reflect.TypeOf((E_Interface_AdminStatus)(0)), - }, - "/interfaces/interface/state/oper-status": []reflect.Type{ - reflect.TypeOf((E_Interface_OperStatus)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/status": []reflect.Type{ - reflect.TypeOf((E_Address_Status)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ - reflect.TypeOf((E_Neighbor_NeighborState)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ - reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/admin-status": []reflect.Type{ - reflect.TypeOf((E_Interface_AdminStatus)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/oper-status": []reflect.Type{ - reflect.TypeOf((E_Interface_OperStatus)(0)), - }, - "/vlans/vlan/config/status": []reflect.Type{ - reflect.TypeOf((E_Vlan_Status)(0)), - }, - "/vlans/vlan/config/tpid": []reflect.Type{ - reflect.TypeOf((E_OpenconfigVlanTypes_TPID_TYPES)(0)), - }, - } -} diff --git a/device-subscriber/internal/model/update.sh b/device-subscriber/internal/model/update.sh deleted file mode 100755 index 433d426..0000000 --- a/device-subscriber/internal/model/update.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2022 NTT Communications Corporation -# -# 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. -# - -set -o nounset -set -o xtrace - -go install github.com/openconfig/ygot/generator@latest -generator -generate_fakeroot -output_file generated.go -package_name model -path=yang -compress_paths=true -shorten_enum_leaf_names -typedef_enum_with_defmod -exclude_modules=ietf-interfaces yang/openconfig-interfaces.yang yang/openconfig-if-ip.yang diff --git a/device-subscriber/internal/validator/validator.go b/device-subscriber/internal/validator/validator.go deleted file mode 100644 index 45ea4d0..0000000 --- a/device-subscriber/internal/validator/validator.go +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package validator - -import ( - "fmt" - "strings" - - "github.com/go-playground/validator/v10" - "github.com/pkg/errors" -) - -var _validator = validator.New() - -func Validate(v any) error { - return errors.WithStack(handleError(_validator.Struct(v))) -} - -func handleError(err error) error { - switch e := err.(type) { // nolint - case validator.ValidationErrors: - var errMsg []string - for _, fe := range e { - errMsg = append(errMsg, fe.Error()) - } - return fmt.Errorf(strings.Join(errMsg, "\n")) - default: - return e - } -} diff --git a/device-subscriber/internal/validator/validator_test.go b/device-subscriber/internal/validator/validator_test.go deleted file mode 100644 index 8d6e0e9..0000000 --- a/device-subscriber/internal/validator/validator_test.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (c) 2022-2023 NTT Communications Corporation - - 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. -*/ - -package validator_test - -import ( - "testing" - - "github.com/nttcom/kuesta/device-subscriber/internal/validator" - "github.com/stretchr/testify/assert" -) - -func TestValidate(t *testing.T) { - type WithValidateTag struct { - Required string `validate:"required"` - Limited uint8 `validate:"max=1"` - } - - tests := []struct { - name string - given WithValidateTag - wantErr bool - }{ - { - "ok", - WithValidateTag{ - Required: "foo", - Limited: 1, - }, - false, - }, - { - "bad", - WithValidateTag{ - Required: "", - Limited: 3, - }, - true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := validator.Validate(tt.given) - t.Log(err) - if tt.wantErr { - assert.Error(t, err) - } else { - assert.Nil(t, err) - } - }) - } -} diff --git a/device-subscriber/main.go b/device-subscriber/main.go deleted file mode 100644 index c3fcd9e..0000000 --- a/device-subscriber/main.go +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (c) 2022 NTT Communications Corporation - - 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. -*/ - -package main - -import ( - "os" - - "github.com/nttcom/kuesta/device-subscriber/internal/cmd" - "github.com/nttcom/kuesta/pkg/stacktrace" -) - -func main() { - if err := cmd.NewRootCmd().Execute(); err != nil { - stacktrace.Show(os.Stderr, err) - os.Exit(1) - } -} diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..7e7e294 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,20 @@ + + + + + + Swagger UI + + + + + + + +
+ + + + + + diff --git a/docs/swagger/favicon-16x16.png b/docs/swagger/favicon-16x16.png new file mode 100644 index 0000000..8b194e6 Binary files /dev/null and b/docs/swagger/favicon-16x16.png differ diff --git a/docs/swagger/favicon-32x32.png b/docs/swagger/favicon-32x32.png new file mode 100644 index 0000000..249737f Binary files /dev/null and b/docs/swagger/favicon-32x32.png differ diff --git a/docs/swagger/index.css b/docs/swagger/index.css new file mode 100644 index 0000000..f2376fd --- /dev/null +++ b/docs/swagger/index.css @@ -0,0 +1,16 @@ +html { + box-sizing: border-box; + overflow: -moz-scrollbars-vertical; + overflow-y: scroll; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + margin: 0; + background: #fafafa; +} diff --git a/docs/swagger/index.html b/docs/swagger/index.html new file mode 100644 index 0000000..b9ac734 --- /dev/null +++ b/docs/swagger/index.html @@ -0,0 +1,20 @@ + + + + + + Swagger UI + + + + + + + +
+ + + + + + diff --git a/docs/swagger/oauth2-redirect.html b/docs/swagger/oauth2-redirect.html new file mode 100644 index 0000000..5640917 --- /dev/null +++ b/docs/swagger/oauth2-redirect.html @@ -0,0 +1,79 @@ + + + + Swagger UI: OAuth2 Redirect + + + + + diff --git a/docs/swagger/swagger-initializer.js b/docs/swagger/swagger-initializer.js new file mode 100644 index 0000000..61722e4 --- /dev/null +++ b/docs/swagger/swagger-initializer.js @@ -0,0 +1,20 @@ +window.onload = function() { + // + + // the following lines will be replaced by docker/configurator, when it runs in a docker-container + window.ui = SwaggerUIBundle({ + spec: spec, + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }); + + // +}; diff --git a/docs/swagger/swagger-ui-bundle.js b/docs/swagger/swagger-ui-bundle.js new file mode 100644 index 0000000..8dbca51 --- /dev/null +++ b/docs/swagger/swagger-ui-bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ +!function webpackUniversalModuleDefinition(i,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.SwaggerUIBundle=s():i.SwaggerUIBundle=s()}(this,(()=>(()=>{var i={17967:(i,s)=>{"use strict";s.Nm=s.Rq=void 0;var u=/^([^\w]*)(javascript|data|vbscript)/im,m=/&#(\w+)(^\w|;)?/g,v=/&(newline|tab);/gi,_=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,j=/^.+(:|:)/gim,M=[".","/"];s.Rq="about:blank",s.Nm=function sanitizeUrl(i){if(!i)return s.Rq;var $=function decodeHtmlCharacters(i){return i.replace(_,"").replace(m,(function(i,s){return String.fromCharCode(s)}))}(i).replace(v,"").replace(_,"").trim();if(!$)return s.Rq;if(function isRelativeUrlWithoutProtocol(i){return M.indexOf(i[0])>-1}($))return $;var W=$.match(j);if(!W)return $;var X=W[0];return u.test(X)?s.Rq:$}},79742:(i,s)=>{"use strict";s.byteLength=function byteLength(i){var s=getLens(i),u=s[0],m=s[1];return 3*(u+m)/4-m},s.toByteArray=function toByteArray(i){var s,u,_=getLens(i),j=_[0],M=_[1],$=new v(function _byteLength(i,s,u){return 3*(s+u)/4-u}(0,j,M)),W=0,X=M>0?j-4:j;for(u=0;u>16&255,$[W++]=s>>8&255,$[W++]=255&s;2===M&&(s=m[i.charCodeAt(u)]<<2|m[i.charCodeAt(u+1)]>>4,$[W++]=255&s);1===M&&(s=m[i.charCodeAt(u)]<<10|m[i.charCodeAt(u+1)]<<4|m[i.charCodeAt(u+2)]>>2,$[W++]=s>>8&255,$[W++]=255&s);return $},s.fromByteArray=function fromByteArray(i){for(var s,m=i.length,v=m%3,_=[],j=16383,M=0,$=m-v;M<$;M+=j)_.push(encodeChunk(i,M,M+j>$?$:M+j));1===v?(s=i[m-1],_.push(u[s>>2]+u[s<<4&63]+"==")):2===v&&(s=(i[m-2]<<8)+i[m-1],_.push(u[s>>10]+u[s>>4&63]+u[s<<2&63]+"="));return _.join("")};for(var u=[],m=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=0;j<64;++j)u[j]=_[j],m[_.charCodeAt(j)]=j;function getLens(i){var s=i.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var u=i.indexOf("=");return-1===u&&(u=s),[u,u===s?0:4-u%4]}function encodeChunk(i,s,m){for(var v,_,j=[],M=s;M>18&63]+u[_>>12&63]+u[_>>6&63]+u[63&_]);return j.join("")}m["-".charCodeAt(0)]=62,m["_".charCodeAt(0)]=63},48764:(i,s,u)=>{"use strict";const m=u(79742),v=u(80645),_="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=Buffer,s.SlowBuffer=function SlowBuffer(i){+i!=i&&(i=0);return Buffer.alloc(+i)},s.INSPECT_MAX_BYTES=50;const j=2147483647;function createBuffer(i){if(i>j)throw new RangeError('The value "'+i+'" is invalid for option "size"');const s=new Uint8Array(i);return Object.setPrototypeOf(s,Buffer.prototype),s}function Buffer(i,s,u){if("number"==typeof i){if("string"==typeof s)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(i)}return from(i,s,u)}function from(i,s,u){if("string"==typeof i)return function fromString(i,s){"string"==typeof s&&""!==s||(s="utf8");if(!Buffer.isEncoding(s))throw new TypeError("Unknown encoding: "+s);const u=0|byteLength(i,s);let m=createBuffer(u);const v=m.write(i,s);v!==u&&(m=m.slice(0,v));return m}(i,s);if(ArrayBuffer.isView(i))return function fromArrayView(i){if(isInstance(i,Uint8Array)){const s=new Uint8Array(i);return fromArrayBuffer(s.buffer,s.byteOffset,s.byteLength)}return fromArrayLike(i)}(i);if(null==i)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(isInstance(i,ArrayBuffer)||i&&isInstance(i.buffer,ArrayBuffer))return fromArrayBuffer(i,s,u);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(i,SharedArrayBuffer)||i&&isInstance(i.buffer,SharedArrayBuffer)))return fromArrayBuffer(i,s,u);if("number"==typeof i)throw new TypeError('The "value" argument must not be of type number. Received type number');const m=i.valueOf&&i.valueOf();if(null!=m&&m!==i)return Buffer.from(m,s,u);const v=function fromObject(i){if(Buffer.isBuffer(i)){const s=0|checked(i.length),u=createBuffer(s);return 0===u.length||i.copy(u,0,0,s),u}if(void 0!==i.length)return"number"!=typeof i.length||numberIsNaN(i.length)?createBuffer(0):fromArrayLike(i);if("Buffer"===i.type&&Array.isArray(i.data))return fromArrayLike(i.data)}(i);if(v)return v;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof i[Symbol.toPrimitive])return Buffer.from(i[Symbol.toPrimitive]("string"),s,u);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}function assertSize(i){if("number"!=typeof i)throw new TypeError('"size" argument must be of type number');if(i<0)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function allocUnsafe(i){return assertSize(i),createBuffer(i<0?0:0|checked(i))}function fromArrayLike(i){const s=i.length<0?0:0|checked(i.length),u=createBuffer(s);for(let m=0;m=j)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+j.toString(16)+" bytes");return 0|i}function byteLength(i,s){if(Buffer.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||isInstance(i,ArrayBuffer))return i.byteLength;if("string"!=typeof i)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);const u=i.length,m=arguments.length>2&&!0===arguments[2];if(!m&&0===u)return 0;let v=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return u;case"utf8":case"utf-8":return utf8ToBytes(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return base64ToBytes(i).length;default:if(v)return m?-1:utf8ToBytes(i).length;s=(""+s).toLowerCase(),v=!0}}function slowToString(i,s,u){let m=!1;if((void 0===s||s<0)&&(s=0),s>this.length)return"";if((void 0===u||u>this.length)&&(u=this.length),u<=0)return"";if((u>>>=0)<=(s>>>=0))return"";for(i||(i="utf8");;)switch(i){case"hex":return hexSlice(this,s,u);case"utf8":case"utf-8":return utf8Slice(this,s,u);case"ascii":return asciiSlice(this,s,u);case"latin1":case"binary":return latin1Slice(this,s,u);case"base64":return base64Slice(this,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,s,u);default:if(m)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),m=!0}}function swap(i,s,u){const m=i[s];i[s]=i[u],i[u]=m}function bidirectionalIndexOf(i,s,u,m,v){if(0===i.length)return-1;if("string"==typeof u?(m=u,u=0):u>2147483647?u=2147483647:u<-2147483648&&(u=-2147483648),numberIsNaN(u=+u)&&(u=v?0:i.length-1),u<0&&(u=i.length+u),u>=i.length){if(v)return-1;u=i.length-1}else if(u<0){if(!v)return-1;u=0}if("string"==typeof s&&(s=Buffer.from(s,m)),Buffer.isBuffer(s))return 0===s.length?-1:arrayIndexOf(i,s,u,m,v);if("number"==typeof s)return s&=255,"function"==typeof Uint8Array.prototype.indexOf?v?Uint8Array.prototype.indexOf.call(i,s,u):Uint8Array.prototype.lastIndexOf.call(i,s,u):arrayIndexOf(i,[s],u,m,v);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(i,s,u,m,v){let _,j=1,M=i.length,$=s.length;if(void 0!==m&&("ucs2"===(m=String(m).toLowerCase())||"ucs-2"===m||"utf16le"===m||"utf-16le"===m)){if(i.length<2||s.length<2)return-1;j=2,M/=2,$/=2,u/=2}function read(i,s){return 1===j?i[s]:i.readUInt16BE(s*j)}if(v){let m=-1;for(_=u;_M&&(u=M-$),_=u;_>=0;_--){let u=!0;for(let m=0;m<$;m++)if(read(i,_+m)!==read(s,m)){u=!1;break}if(u)return _}return-1}function hexWrite(i,s,u,m){u=Number(u)||0;const v=i.length-u;m?(m=Number(m))>v&&(m=v):m=v;const _=s.length;let j;for(m>_/2&&(m=_/2),j=0;j>8,v=u%256,_.push(v),_.push(m);return _}(s,i.length-u),i,u,m)}function base64Slice(i,s,u){return 0===s&&u===i.length?m.fromByteArray(i):m.fromByteArray(i.slice(s,u))}function utf8Slice(i,s,u){u=Math.min(i.length,u);const m=[];let v=s;for(;v239?4:s>223?3:s>191?2:1;if(v+j<=u){let u,m,M,$;switch(j){case 1:s<128&&(_=s);break;case 2:u=i[v+1],128==(192&u)&&($=(31&s)<<6|63&u,$>127&&(_=$));break;case 3:u=i[v+1],m=i[v+2],128==(192&u)&&128==(192&m)&&($=(15&s)<<12|(63&u)<<6|63&m,$>2047&&($<55296||$>57343)&&(_=$));break;case 4:u=i[v+1],m=i[v+2],M=i[v+3],128==(192&u)&&128==(192&m)&&128==(192&M)&&($=(15&s)<<18|(63&u)<<12|(63&m)<<6|63&M,$>65535&&$<1114112&&(_=$))}}null===_?(_=65533,j=1):_>65535&&(_-=65536,m.push(_>>>10&1023|55296),_=56320|1023&_),m.push(_),v+=j}return function decodeCodePointsArray(i){const s=i.length;if(s<=M)return String.fromCharCode.apply(String,i);let u="",m=0;for(;mm.length?(Buffer.isBuffer(s)||(s=Buffer.from(s)),s.copy(m,v)):Uint8Array.prototype.set.call(m,s,v);else{if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(m,v)}v+=s.length}return m},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const i=this.length;if(i%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let s=0;su&&(i+=" ... "),""},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(i,s,u,m,v){if(isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),!Buffer.isBuffer(i))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof i);if(void 0===s&&(s=0),void 0===u&&(u=i?i.length:0),void 0===m&&(m=0),void 0===v&&(v=this.length),s<0||u>i.length||m<0||v>this.length)throw new RangeError("out of range index");if(m>=v&&s>=u)return 0;if(m>=v)return-1;if(s>=u)return 1;if(this===i)return 0;let _=(v>>>=0)-(m>>>=0),j=(u>>>=0)-(s>>>=0);const M=Math.min(_,j),$=this.slice(m,v),W=i.slice(s,u);for(let i=0;i>>=0,isFinite(u)?(u>>>=0,void 0===m&&(m="utf8")):(m=u,u=void 0)}const v=this.length-s;if((void 0===u||u>v)&&(u=v),i.length>0&&(u<0||s<0)||s>this.length)throw new RangeError("Attempt to write outside buffer bounds");m||(m="utf8");let _=!1;for(;;)switch(m){case"hex":return hexWrite(this,i,s,u);case"utf8":case"utf-8":return utf8Write(this,i,s,u);case"ascii":case"latin1":case"binary":return asciiWrite(this,i,s,u);case"base64":return base64Write(this,i,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,i,s,u);default:if(_)throw new TypeError("Unknown encoding: "+m);m=(""+m).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function asciiSlice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;vm)&&(u=m);let v="";for(let m=s;mu)throw new RangeError("Trying to access beyond buffer length")}function checkInt(i,s,u,m,v,_){if(!Buffer.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>v||s<_)throw new RangeError('"value" argument is out of bounds');if(u+m>i.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,u}function wrtBigUInt64BE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u+7]=_,_>>=8,i[u+6]=_,_>>=8,i[u+5]=_,_>>=8,i[u+4]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u+3]=j,j>>=8,i[u+2]=j,j>>=8,i[u+1]=j,j>>=8,i[u]=j,u+8}function checkIEEE754(i,s,u,m,v,_){if(u+m>i.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("Index out of range")}function writeFloat(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,4),v.write(i,s,u,m,23,4),u+4}function writeDouble(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,8),v.write(i,s,u,m,52,8),u+8}Buffer.prototype.slice=function slice(i,s){const u=this.length;(i=~~i)<0?(i+=u)<0&&(i=0):i>u&&(i=u),(s=void 0===s?u:~~s)<0?(s+=u)<0&&(s=0):s>u&&(s=u),s>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i+--s],v=1;for(;s>0&&(v*=256);)m+=this[i+--s]*v;return m},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),this[i]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]|this[i+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]<<8|this[i+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),(this[i]|this[i+1]<<8|this[i+2]<<16)+16777216*this[i+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),16777216*this[i]+(this[i+1]<<16|this[i+2]<<8|this[i+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s+256*this[++i]+65536*this[++i]+this[++i]*2**24,v=this[++i]+256*this[++i]+65536*this[++i]+u*2**24;return BigInt(m)+(BigInt(v)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s*2**24+65536*this[++i]+256*this[++i]+this[++i],v=this[++i]*2**24+65536*this[++i]+256*this[++i]+u;return(BigInt(m)<>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_=v&&(m-=Math.pow(2,8*s)),m},Buffer.prototype.readIntBE=function readIntBE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=s,v=1,_=this[i+--m];for(;m>0&&(v*=256);)_+=this[i+--m]*v;return v*=128,_>=v&&(_-=Math.pow(2,8*s)),_},Buffer.prototype.readInt8=function readInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),128&this[i]?-1*(255-this[i]+1):this[i]},Buffer.prototype.readInt16LE=function readInt16LE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i]|this[i+1]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt16BE=function readInt16BE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i+1]|this[i]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt32LE=function readInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]|this[i+1]<<8|this[i+2]<<16|this[i+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]<<24|this[i+1]<<16|this[i+2]<<8|this[i+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=this[i+4]+256*this[i+5]+65536*this[i+6]+(u<<24);return(BigInt(m)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=(s<<24)+65536*this[++i]+256*this[++i]+this[++i];return(BigInt(m)<>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(i,s,u,m){if(i=+i,s>>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=1,_=0;for(this[s]=255&i;++_>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=u-1,_=1;for(this[s+v]=255&i;--v>=0&&(_*=256);)this[s+v]=i/_&255;return s+u},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,255,0),this[s]=255&i,s+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s+3]=i>>>24,this[s+2]=i>>>16,this[s+1]=i>>>8,this[s]=255&i,s+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=0,_=1,j=0;for(this[s]=255&i;++v>0)-j&255;return s+u},Buffer.prototype.writeIntBE=function writeIntBE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=u-1,_=1,j=0;for(this[s+v]=255&i;--v>=0&&(_*=256);)i<0&&0===j&&0!==this[s+v+1]&&(j=1),this[s+v]=(i/_>>0)-j&255;return s+u},Buffer.prototype.writeInt8=function writeInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,127,-128),i<0&&(i=255+i+1),this[s]=255&i,s+1},Buffer.prototype.writeInt16LE=function writeInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeInt16BE=function writeInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeInt32LE=function writeInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),this[s]=255&i,this[s+1]=i>>>8,this[s+2]=i>>>16,this[s+3]=i>>>24,s+4},Buffer.prototype.writeInt32BE=function writeInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),i<0&&(i=4294967295+i+1),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(i,s,u){return writeFloat(this,i,s,!0,u)},Buffer.prototype.writeFloatBE=function writeFloatBE(i,s,u){return writeFloat(this,i,s,!1,u)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(i,s,u){return writeDouble(this,i,s,!0,u)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(i,s,u){return writeDouble(this,i,s,!1,u)},Buffer.prototype.copy=function copy(i,s,u,m){if(!Buffer.isBuffer(i))throw new TypeError("argument should be a Buffer");if(u||(u=0),m||0===m||(m=this.length),s>=i.length&&(s=i.length),s||(s=0),m>0&&m=this.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("sourceEnd out of bounds");m>this.length&&(m=this.length),i.length-s>>=0,u=void 0===u?this.length:u>>>0,i||(i=0),"number"==typeof i)for(v=s;v=m+4;u-=3)s=`_${i.slice(u-3,u)}${s}`;return`${i.slice(0,u)}${s}`}function checkIntBI(i,s,u,m,v,_){if(i>u||i3?0===s||s===BigInt(0)?`>= 0${m} and < 2${m} ** ${8*(_+1)}${m}`:`>= -(2${m} ** ${8*(_+1)-1}${m}) and < 2 ** ${8*(_+1)-1}${m}`:`>= ${s}${m} and <= ${u}${m}`,new $.ERR_OUT_OF_RANGE("value",v,i)}!function checkBounds(i,s,u){validateNumber(s,"offset"),void 0!==i[s]&&void 0!==i[s+u]||boundsError(s,i.length-(u+1))}(m,v,_)}function validateNumber(i,s){if("number"!=typeof i)throw new $.ERR_INVALID_ARG_TYPE(s,"number",i)}function boundsError(i,s,u){if(Math.floor(i)!==i)throw validateNumber(i,u),new $.ERR_OUT_OF_RANGE(u||"offset","an integer",i);if(s<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(u||"offset",`>= ${u?1:0} and <= ${s}`,i)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(i){return i?`${i} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(i,s){return`The "${i}" argument must be of type number. Received type ${typeof s}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(i,s,u){let m=`The value of "${i}" is out of range.`,v=u;return Number.isInteger(u)&&Math.abs(u)>2**32?v=addNumericalSeparator(String(u)):"bigint"==typeof u&&(v=String(u),(u>BigInt(2)**BigInt(32)||u<-(BigInt(2)**BigInt(32)))&&(v=addNumericalSeparator(v)),v+="n"),m+=` It must be ${s}. Received ${v}`,m}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(i,s){let u;s=s||1/0;const m=i.length;let v=null;const _=[];for(let j=0;j55295&&u<57344){if(!v){if(u>56319){(s-=3)>-1&&_.push(239,191,189);continue}if(j+1===m){(s-=3)>-1&&_.push(239,191,189);continue}v=u;continue}if(u<56320){(s-=3)>-1&&_.push(239,191,189),v=u;continue}u=65536+(v-55296<<10|u-56320)}else v&&(s-=3)>-1&&_.push(239,191,189);if(v=null,u<128){if((s-=1)<0)break;_.push(u)}else if(u<2048){if((s-=2)<0)break;_.push(u>>6|192,63&u|128)}else if(u<65536){if((s-=3)<0)break;_.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((s-=4)<0)break;_.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return _}function base64ToBytes(i){return m.toByteArray(function base64clean(i){if((i=(i=i.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;i.length%4!=0;)i+="=";return i}(i))}function blitBuffer(i,s,u,m){let v;for(v=0;v=s.length||v>=i.length);++v)s[v+u]=i[v];return v}function isInstance(i,s){return i instanceof s||null!=i&&null!=i.constructor&&null!=i.constructor.name&&i.constructor.name===s.name}function numberIsNaN(i){return i!=i}const X=function(){const i="0123456789abcdef",s=new Array(256);for(let u=0;u<16;++u){const m=16*u;for(let v=0;v<16;++v)s[m+v]=i[u]+i[v]}return s}();function defineBigIntMethod(i){return"undefined"==typeof BigInt?BufferBigIntNotDefined:i}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},21924:(i,s,u)=>{"use strict";var m=u(40210),v=u(55559),_=v(m("String.prototype.indexOf"));i.exports=function callBoundIntrinsic(i,s){var u=m(i,!!s);return"function"==typeof u&&_(i,".prototype.")>-1?v(u):u}},55559:(i,s,u)=>{"use strict";var m=u(58612),v=u(40210),_=v("%Function.prototype.apply%"),j=v("%Function.prototype.call%"),M=v("%Reflect.apply%",!0)||m.call(j,_),$=v("%Object.getOwnPropertyDescriptor%",!0),W=v("%Object.defineProperty%",!0),X=v("%Math.max%");if(W)try{W({},"a",{value:1})}catch(i){W=null}i.exports=function callBind(i){var s=M(m,j,arguments);$&&W&&($(s,"length").configurable&&W(s,"length",{value:1+X(0,i.length-(arguments.length-1))}));return s};var Y=function applyBind(){return M(m,_,arguments)};W?W(i.exports,"apply",{value:Y}):i.exports.apply=Y},94184:(i,s)=>{var u;!function(){"use strict";var m={}.hasOwnProperty;function classNames(){for(var i=[],s=0;s{"use strict";s.parse=function parse(i,s){if("string"!=typeof i)throw new TypeError("argument str must be a string");var u={},m=(s||{}).decode||decode,v=0;for(;v{"use strict";var m=u(11742),v={"text/plain":"Text","text/html":"Url",default:"Text"};i.exports=function copy(i,s){var u,_,j,M,$,W,X=!1;s||(s={}),u=s.debug||!1;try{if(j=m(),M=document.createRange(),$=document.getSelection(),(W=document.createElement("span")).textContent=i,W.ariaHidden="true",W.style.all="unset",W.style.position="fixed",W.style.top=0,W.style.clip="rect(0, 0, 0, 0)",W.style.whiteSpace="pre",W.style.webkitUserSelect="text",W.style.MozUserSelect="text",W.style.msUserSelect="text",W.style.userSelect="text",W.addEventListener("copy",(function(m){if(m.stopPropagation(),s.format)if(m.preventDefault(),void 0===m.clipboardData){u&&console.warn("unable to use e.clipboardData"),u&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=v[s.format]||v.default;window.clipboardData.setData(_,i)}else m.clipboardData.clearData(),m.clipboardData.setData(s.format,i);s.onCopy&&(m.preventDefault(),s.onCopy(m.clipboardData))})),document.body.appendChild(W),M.selectNodeContents(W),$.addRange(M),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");X=!0}catch(m){u&&console.error("unable to copy using execCommand: ",m),u&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(s.format||"text",i),s.onCopy&&s.onCopy(window.clipboardData),X=!0}catch(m){u&&console.error("unable to copy using clipboardData: ",m),u&&console.error("falling back to prompt"),_=function format(i){var s=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return i.replace(/#{\s*key\s*}/g,s)}("message"in s?s.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,i)}}finally{$&&("function"==typeof $.removeRange?$.removeRange(M):$.removeAllRanges()),W&&document.body.removeChild(W),j()}return X}},44101:(i,s,u)=>{var m=u(18957);i.exports=m},90093:(i,s,u)=>{var m=u(28196);i.exports=m},65362:(i,s,u)=>{var m=u(63383);i.exports=m},50415:(i,s,u)=>{u(61181),u(47627),u(24415),u(66274),u(77971);var m=u(54058);i.exports=m.AggregateError},27700:(i,s,u)=>{u(73381);var m=u(35703);i.exports=m("Function").bind},16246:(i,s,u)=>{var m=u(7046),v=u(27700),_=Function.prototype;i.exports=function(i){var s=i.bind;return i===_||m(_,i)&&s===_.bind?v:s}},45999:(i,s,u)=>{u(49221);var m=u(54058);i.exports=m.Object.assign},16121:(i,s,u)=>{i.exports=u(38644)},14122:(i,s,u)=>{i.exports=u(89097)},60269:(i,s,u)=>{i.exports=u(76936)},38644:(i,s,u)=>{u(89731);var m=u(44101);i.exports=m},89097:(i,s,u)=>{var m=u(90093);i.exports=m},76936:(i,s,u)=>{var m=u(65362);i.exports=m},24883:(i,s,u)=>{var m=u(57475),v=u(69826),_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not a function")}},11851:(i,s,u)=>{var m=u(57475),v=String,_=TypeError;i.exports=function(i){if("object"==typeof i||m(i))return i;throw _("Can't set "+v(i)+" as a prototype")}},18479:i=>{i.exports=function(){}},96059:(i,s,u)=>{var m=u(10941),v=String,_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not an object")}},31692:(i,s,u)=>{var m=u(74529),v=u(59413),_=u(10623),createMethod=function(i){return function(s,u,j){var M,$=m(s),W=_($),X=v(j,W);if(i&&u!=u){for(;W>X;)if((M=$[X++])!=M)return!0}else for(;W>X;X++)if((i||X in $)&&$[X]===u)return i||X||0;return!i&&-1}};i.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},93765:(i,s,u)=>{var m=u(95329);i.exports=m([].slice)},82532:(i,s,u)=>{var m=u(95329),v=m({}.toString),_=m("".slice);i.exports=function(i){return _(v(i),8,-1)}},9697:(i,s,u)=>{var m=u(22885),v=u(57475),_=u(82532),j=u(99813)("toStringTag"),M=Object,$="Arguments"==_(function(){return arguments}());i.exports=m?_:function(i){var s,u,m;return void 0===i?"Undefined":null===i?"Null":"string"==typeof(u=function(i,s){try{return i[s]}catch(i){}}(s=M(i),j))?u:$?_(s):"Object"==(m=_(s))&&v(s.callee)?"Arguments":m}},23489:(i,s,u)=>{var m=u(90953),v=u(31136),_=u(49677),j=u(65988);i.exports=function(i,s,u){for(var M=v(s),$=j.f,W=_.f,X=0;X{var m=u(95981);i.exports=!m((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},23538:i=>{i.exports=function(i,s){return{value:i,done:s}}},32029:(i,s,u)=>{var m=u(55746),v=u(65988),_=u(31887);i.exports=m?function(i,s,u){return v.f(i,s,_(1,u))}:function(i,s,u){return i[s]=u,i}},31887:i=>{i.exports=function(i,s){return{enumerable:!(1&i),configurable:!(2&i),writable:!(4&i),value:s}}},95929:(i,s,u)=>{var m=u(32029);i.exports=function(i,s,u,v){return v&&v.enumerable?i[s]=u:m(i,s,u),i}},75609:(i,s,u)=>{var m=u(21899),v=Object.defineProperty;i.exports=function(i,s){try{v(m,i,{value:s,configurable:!0,writable:!0})}catch(u){m[i]=s}return s}},55746:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},76616:i=>{var s="object"==typeof document&&document.all,u=void 0===s&&void 0!==s;i.exports={all:s,IS_HTMLDDA:u}},61333:(i,s,u)=>{var m=u(21899),v=u(10941),_=m.document,j=v(_)&&v(_.createElement);i.exports=function(i){return j?_.createElement(i):{}}},63281:i=>{i.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},2861:i=>{i.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},53385:(i,s,u)=>{var m,v,_=u(21899),j=u(2861),M=_.process,$=_.Deno,W=M&&M.versions||$&&$.version,X=W&&W.v8;X&&(v=(m=X.split("."))[0]>0&&m[0]<4?1:+(m[0]+m[1])),!v&&j&&(!(m=j.match(/Edge\/(\d+)/))||m[1]>=74)&&(m=j.match(/Chrome\/(\d+)/))&&(v=+m[1]),i.exports=v},35703:(i,s,u)=>{var m=u(54058);i.exports=function(i){return m[i+"Prototype"]}},56759:i=>{i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},53995:(i,s,u)=>{var m=u(95329),v=Error,_=m("".replace),j=String(v("zxcasd").stack),M=/\n\s*at [^:]*:[^\n]*/,$=M.test(j);i.exports=function(i,s){if($&&"string"==typeof i&&!v.prepareStackTrace)for(;s--;)i=_(i,M,"");return i}},79585:(i,s,u)=>{var m=u(32029),v=u(53995),_=u(18780),j=Error.captureStackTrace;i.exports=function(i,s,u,M){_&&(j?j(i,s):m(i,"stack",v(u,M)))}},18780:(i,s,u)=>{var m=u(95981),v=u(31887);i.exports=!m((function(){var i=Error("a");return!("stack"in i)||(Object.defineProperty(i,"stack",v(1,7)),7!==i.stack)}))},76887:(i,s,u)=>{"use strict";var m=u(21899),v=u(79730),_=u(97484),j=u(57475),M=u(49677).f,$=u(37252),W=u(54058),X=u(86843),Y=u(32029),Z=u(90953),wrapConstructor=function(i){var Wrapper=function(s,u,m){if(this instanceof Wrapper){switch(arguments.length){case 0:return new i;case 1:return new i(s);case 2:return new i(s,u)}return new i(s,u,m)}return v(i,this,arguments)};return Wrapper.prototype=i.prototype,Wrapper};i.exports=function(i,s){var u,v,ee,ae,ie,le,ce,pe,de,fe=i.target,ye=i.global,be=i.stat,_e=i.proto,we=ye?m:be?m[fe]:(m[fe]||{}).prototype,Se=ye?W:W[fe]||Y(W,fe,{})[fe],xe=Se.prototype;for(ae in s)v=!(u=$(ye?ae:fe+(be?".":"#")+ae,i.forced))&&we&&Z(we,ae),le=Se[ae],v&&(ce=i.dontCallGetSet?(de=M(we,ae))&&de.value:we[ae]),ie=v&&ce?ce:s[ae],v&&typeof le==typeof ie||(pe=i.bind&&v?X(ie,m):i.wrap&&v?wrapConstructor(ie):_e&&j(ie)?_(ie):ie,(i.sham||ie&&ie.sham||le&&le.sham)&&Y(pe,"sham",!0),Y(Se,ae,pe),_e&&(Z(W,ee=fe+"Prototype")||Y(W,ee,{}),Y(W[ee],ae,ie),i.real&&xe&&(u||!xe[ae])&&Y(xe,ae,ie)))}},95981:i=>{i.exports=function(i){try{return!!i()}catch(i){return!0}}},79730:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.apply,j=v.call;i.exports="object"==typeof Reflect&&Reflect.apply||(m?j.bind(_):function(){return j.apply(_,arguments)})},86843:(i,s,u)=>{var m=u(97484),v=u(24883),_=u(18285),j=m(m.bind);i.exports=function(i,s){return v(i),void 0===s?i:_?j(i,s):function(){return i.apply(s,arguments)}}},18285:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){var i=function(){}.bind();return"function"!=typeof i||i.hasOwnProperty("prototype")}))},98308:(i,s,u)=>{"use strict";var m=u(95329),v=u(24883),_=u(10941),j=u(90953),M=u(93765),$=u(18285),W=Function,X=m([].concat),Y=m([].join),Z={};i.exports=$?W.bind:function bind(i){var s=v(this),u=s.prototype,m=M(arguments,1),$=function bound(){var u=X(m,M(arguments));return this instanceof $?function(i,s,u){if(!j(Z,s)){for(var m=[],v=0;v{var m=u(18285),v=Function.prototype.call;i.exports=m?v.bind(v):function(){return v.apply(v,arguments)}},79417:(i,s,u)=>{var m=u(55746),v=u(90953),_=Function.prototype,j=m&&Object.getOwnPropertyDescriptor,M=v(_,"name"),$=M&&"something"===function something(){}.name,W=M&&(!m||m&&j(_,"name").configurable);i.exports={EXISTS:M,PROPER:$,CONFIGURABLE:W}},45526:(i,s,u)=>{var m=u(95329),v=u(24883);i.exports=function(i,s,u){try{return m(v(Object.getOwnPropertyDescriptor(i,s)[u]))}catch(i){}}},97484:(i,s,u)=>{var m=u(82532),v=u(95329);i.exports=function(i){if("Function"===m(i))return v(i)}},95329:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.call,j=m&&v.bind.bind(_,_);i.exports=m?j:function(i){return function(){return _.apply(i,arguments)}}},626:(i,s,u)=>{var m=u(54058),v=u(21899),_=u(57475),aFunction=function(i){return _(i)?i:void 0};i.exports=function(i,s){return arguments.length<2?aFunction(m[i])||aFunction(v[i]):m[i]&&m[i][s]||v[i]&&v[i][s]}},22902:(i,s,u)=>{var m=u(9697),v=u(14229),_=u(82119),j=u(12077),M=u(99813)("iterator");i.exports=function(i){if(!_(i))return v(i,M)||v(i,"@@iterator")||j[m(i)]}},53476:(i,s,u)=>{var m=u(78834),v=u(24883),_=u(96059),j=u(69826),M=u(22902),$=TypeError;i.exports=function(i,s){var u=arguments.length<2?M(i):s;if(v(u))return _(m(u,i));throw $(j(i)+" is not iterable")}},14229:(i,s,u)=>{var m=u(24883),v=u(82119);i.exports=function(i,s){var u=i[s];return v(u)?void 0:m(u)}},21899:function(i,s,u){var check=function(i){return i&&i.Math==Math&&i};i.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof u.g&&u.g)||function(){return this}()||this||Function("return this")()},90953:(i,s,u)=>{var m=u(95329),v=u(89678),_=m({}.hasOwnProperty);i.exports=Object.hasOwn||function hasOwn(i,s){return _(v(i),s)}},27748:i=>{i.exports={}},15463:(i,s,u)=>{var m=u(626);i.exports=m("document","documentElement")},2840:(i,s,u)=>{var m=u(55746),v=u(95981),_=u(61333);i.exports=!m&&!v((function(){return 7!=Object.defineProperty(_("div"),"a",{get:function(){return 7}}).a}))},37026:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(82532),j=Object,M=m("".split);i.exports=v((function(){return!j("z").propertyIsEnumerable(0)}))?function(i){return"String"==_(i)?M(i,""):j(i)}:j},70926:(i,s,u)=>{var m=u(57475),v=u(10941),_=u(88929);i.exports=function(i,s,u){var j,M;return _&&m(j=s.constructor)&&j!==u&&v(M=j.prototype)&&M!==u.prototype&&_(i,M),i}},53794:(i,s,u)=>{var m=u(10941),v=u(32029);i.exports=function(i,s){m(s)&&"cause"in s&&v(i,"cause",s.cause)}},45402:(i,s,u)=>{var m,v,_,j=u(47093),M=u(21899),$=u(10941),W=u(32029),X=u(90953),Y=u(63030),Z=u(44262),ee=u(27748),ae="Object already initialized",ie=M.TypeError,le=M.WeakMap;if(j||Y.state){var ce=Y.state||(Y.state=new le);ce.get=ce.get,ce.has=ce.has,ce.set=ce.set,m=function(i,s){if(ce.has(i))throw ie(ae);return s.facade=i,ce.set(i,s),s},v=function(i){return ce.get(i)||{}},_=function(i){return ce.has(i)}}else{var pe=Z("state");ee[pe]=!0,m=function(i,s){if(X(i,pe))throw ie(ae);return s.facade=i,W(i,pe,s),s},v=function(i){return X(i,pe)?i[pe]:{}},_=function(i){return X(i,pe)}}i.exports={set:m,get:v,has:_,enforce:function(i){return _(i)?v(i):m(i,{})},getterFor:function(i){return function(s){var u;if(!$(s)||(u=v(s)).type!==i)throw ie("Incompatible receiver, "+i+" required");return u}}}},6782:(i,s,u)=>{var m=u(99813),v=u(12077),_=m("iterator"),j=Array.prototype;i.exports=function(i){return void 0!==i&&(v.Array===i||j[_]===i)}},57475:(i,s,u)=>{var m=u(76616),v=m.all;i.exports=m.IS_HTMLDDA?function(i){return"function"==typeof i||i===v}:function(i){return"function"==typeof i}},37252:(i,s,u)=>{var m=u(95981),v=u(57475),_=/#|\.prototype\./,isForced=function(i,s){var u=M[j(i)];return u==W||u!=$&&(v(s)?m(s):!!s)},j=isForced.normalize=function(i){return String(i).replace(_,".").toLowerCase()},M=isForced.data={},$=isForced.NATIVE="N",W=isForced.POLYFILL="P";i.exports=isForced},82119:i=>{i.exports=function(i){return null==i}},10941:(i,s,u)=>{var m=u(57475),v=u(76616),_=v.all;i.exports=v.IS_HTMLDDA?function(i){return"object"==typeof i?null!==i:m(i)||i===_}:function(i){return"object"==typeof i?null!==i:m(i)}},82529:i=>{i.exports=!0},56664:(i,s,u)=>{var m=u(626),v=u(57475),_=u(7046),j=u(32302),M=Object;i.exports=j?function(i){return"symbol"==typeof i}:function(i){var s=m("Symbol");return v(s)&&_(s.prototype,M(i))}},93091:(i,s,u)=>{var m=u(86843),v=u(78834),_=u(96059),j=u(69826),M=u(6782),$=u(10623),W=u(7046),X=u(53476),Y=u(22902),Z=u(7609),ee=TypeError,Result=function(i,s){this.stopped=i,this.result=s},ae=Result.prototype;i.exports=function(i,s,u){var ie,le,ce,pe,de,fe,ye,be=u&&u.that,_e=!(!u||!u.AS_ENTRIES),we=!(!u||!u.IS_RECORD),Se=!(!u||!u.IS_ITERATOR),xe=!(!u||!u.INTERRUPTED),Pe=m(s,be),stop=function(i){return ie&&Z(ie,"normal",i),new Result(!0,i)},callFn=function(i){return _e?(_(i),xe?Pe(i[0],i[1],stop):Pe(i[0],i[1])):xe?Pe(i,stop):Pe(i)};if(we)ie=i.iterator;else if(Se)ie=i;else{if(!(le=Y(i)))throw ee(j(i)+" is not iterable");if(M(le)){for(ce=0,pe=$(i);pe>ce;ce++)if((de=callFn(i[ce]))&&W(ae,de))return de;return new Result(!1)}ie=X(i,le)}for(fe=we?i.next:ie.next;!(ye=v(fe,ie)).done;){try{de=callFn(ye.value)}catch(i){Z(ie,"throw",i)}if("object"==typeof de&&de&&W(ae,de))return de}return new Result(!1)}},7609:(i,s,u)=>{var m=u(78834),v=u(96059),_=u(14229);i.exports=function(i,s,u){var j,M;v(i);try{if(!(j=_(i,"return"))){if("throw"===s)throw u;return u}j=m(j,i)}catch(i){M=!0,j=i}if("throw"===s)throw u;if(M)throw j;return v(j),u}},53847:(i,s,u)=>{"use strict";var m=u(35143).IteratorPrototype,v=u(29290),_=u(31887),j=u(90904),M=u(12077),returnThis=function(){return this};i.exports=function(i,s,u,$){var W=s+" Iterator";return i.prototype=v(m,{next:_(+!$,u)}),j(i,W,!1,!0),M[W]=returnThis,i}},75105:(i,s,u)=>{"use strict";var m=u(76887),v=u(78834),_=u(82529),j=u(79417),M=u(57475),$=u(53847),W=u(249),X=u(88929),Y=u(90904),Z=u(32029),ee=u(95929),ae=u(99813),ie=u(12077),le=u(35143),ce=j.PROPER,pe=j.CONFIGURABLE,de=le.IteratorPrototype,fe=le.BUGGY_SAFARI_ITERATORS,ye=ae("iterator"),be="keys",_e="values",we="entries",returnThis=function(){return this};i.exports=function(i,s,u,j,ae,le,Se){$(u,s,j);var xe,Pe,Ie,getIterationMethod=function(i){if(i===ae&&Ve)return Ve;if(!fe&&i in qe)return qe[i];switch(i){case be:return function keys(){return new u(this,i)};case _e:return function values(){return new u(this,i)};case we:return function entries(){return new u(this,i)}}return function(){return new u(this)}},Te=s+" Iterator",Re=!1,qe=i.prototype,ze=qe[ye]||qe["@@iterator"]||ae&&qe[ae],Ve=!fe&&ze||getIterationMethod(ae),We="Array"==s&&qe.entries||ze;if(We&&(xe=W(We.call(new i)))!==Object.prototype&&xe.next&&(_||W(xe)===de||(X?X(xe,de):M(xe[ye])||ee(xe,ye,returnThis)),Y(xe,Te,!0,!0),_&&(ie[Te]=returnThis)),ce&&ae==_e&&ze&&ze.name!==_e&&(!_&&pe?Z(qe,"name",_e):(Re=!0,Ve=function values(){return v(ze,this)})),ae)if(Pe={values:getIterationMethod(_e),keys:le?Ve:getIterationMethod(be),entries:getIterationMethod(we)},Se)for(Ie in Pe)(fe||Re||!(Ie in qe))&&ee(qe,Ie,Pe[Ie]);else m({target:s,proto:!0,forced:fe||Re},Pe);return _&&!Se||qe[ye]===Ve||ee(qe,ye,Ve,{name:ae}),ie[s]=Ve,Pe}},35143:(i,s,u)=>{"use strict";var m,v,_,j=u(95981),M=u(57475),$=u(10941),W=u(29290),X=u(249),Y=u(95929),Z=u(99813),ee=u(82529),ae=Z("iterator"),ie=!1;[].keys&&("next"in(_=[].keys())?(v=X(X(_)))!==Object.prototype&&(m=v):ie=!0),!$(m)||j((function(){var i={};return m[ae].call(i)!==i}))?m={}:ee&&(m=W(m)),M(m[ae])||Y(m,ae,(function(){return this})),i.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:ie}},12077:i=>{i.exports={}},10623:(i,s,u)=>{var m=u(43057);i.exports=function(i){return m(i.length)}},35331:i=>{var s=Math.ceil,u=Math.floor;i.exports=Math.trunc||function trunc(i){var m=+i;return(m>0?u:s)(m)}},14649:(i,s,u)=>{var m=u(85803);i.exports=function(i,s){return void 0===i?arguments.length<2?"":s:m(i)}},24420:(i,s,u)=>{"use strict";var m=u(55746),v=u(95329),_=u(78834),j=u(95981),M=u(14771),$=u(87857),W=u(36760),X=u(89678),Y=u(37026),Z=Object.assign,ee=Object.defineProperty,ae=v([].concat);i.exports=!Z||j((function(){if(m&&1!==Z({b:1},Z(ee({},"a",{enumerable:!0,get:function(){ee(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var i={},s={},u=Symbol(),v="abcdefghijklmnopqrst";return i[u]=7,v.split("").forEach((function(i){s[i]=i})),7!=Z({},i)[u]||M(Z({},s)).join("")!=v}))?function assign(i,s){for(var u=X(i),v=arguments.length,j=1,Z=$.f,ee=W.f;v>j;)for(var ie,le=Y(arguments[j++]),ce=Z?ae(M(le),Z(le)):M(le),pe=ce.length,de=0;pe>de;)ie=ce[de++],m&&!_(ee,le,ie)||(u[ie]=le[ie]);return u}:Z},29290:(i,s,u)=>{var m,v=u(96059),_=u(59938),j=u(56759),M=u(27748),$=u(15463),W=u(61333),X=u(44262),Y="prototype",Z="script",ee=X("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(i){return"<"+Z+">"+i+""},NullProtoObjectViaActiveX=function(i){i.write(scriptTag("")),i.close();var s=i.parentWindow.Object;return i=null,s},NullProtoObject=function(){try{m=new ActiveXObject("htmlfile")}catch(i){}var i,s,u;NullProtoObject="undefined"!=typeof document?document.domain&&m?NullProtoObjectViaActiveX(m):(s=W("iframe"),u="java"+Z+":",s.style.display="none",$.appendChild(s),s.src=String(u),(i=s.contentWindow.document).open(),i.write(scriptTag("document.F=Object")),i.close(),i.F):NullProtoObjectViaActiveX(m);for(var v=j.length;v--;)delete NullProtoObject[Y][j[v]];return NullProtoObject()};M[ee]=!0,i.exports=Object.create||function create(i,s){var u;return null!==i?(EmptyConstructor[Y]=v(i),u=new EmptyConstructor,EmptyConstructor[Y]=null,u[ee]=i):u=NullProtoObject(),void 0===s?u:_.f(u,s)}},59938:(i,s,u)=>{var m=u(55746),v=u(83937),_=u(65988),j=u(96059),M=u(74529),$=u(14771);s.f=m&&!v?Object.defineProperties:function defineProperties(i,s){j(i);for(var u,m=M(s),v=$(s),W=v.length,X=0;W>X;)_.f(i,u=v[X++],m[u]);return i}},65988:(i,s,u)=>{var m=u(55746),v=u(2840),_=u(83937),j=u(96059),M=u(83894),$=TypeError,W=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Y="enumerable",Z="configurable",ee="writable";s.f=m?_?function defineProperty(i,s,u){if(j(i),s=M(s),j(u),"function"==typeof i&&"prototype"===s&&"value"in u&&ee in u&&!u[ee]){var m=X(i,s);m&&m[ee]&&(i[s]=u.value,u={configurable:Z in u?u[Z]:m[Z],enumerable:Y in u?u[Y]:m[Y],writable:!1})}return W(i,s,u)}:W:function defineProperty(i,s,u){if(j(i),s=M(s),j(u),v)try{return W(i,s,u)}catch(i){}if("get"in u||"set"in u)throw $("Accessors not supported");return"value"in u&&(i[s]=u.value),i}},49677:(i,s,u)=>{var m=u(55746),v=u(78834),_=u(36760),j=u(31887),M=u(74529),$=u(83894),W=u(90953),X=u(2840),Y=Object.getOwnPropertyDescriptor;s.f=m?Y:function getOwnPropertyDescriptor(i,s){if(i=M(i),s=$(s),X)try{return Y(i,s)}catch(i){}if(W(i,s))return j(!v(_.f,i,s),i[s])}},10946:(i,s,u)=>{var m=u(55629),v=u(56759).concat("length","prototype");s.f=Object.getOwnPropertyNames||function getOwnPropertyNames(i){return m(i,v)}},87857:(i,s)=>{s.f=Object.getOwnPropertySymbols},249:(i,s,u)=>{var m=u(90953),v=u(57475),_=u(89678),j=u(44262),M=u(91310),$=j("IE_PROTO"),W=Object,X=W.prototype;i.exports=M?W.getPrototypeOf:function(i){var s=_(i);if(m(s,$))return s[$];var u=s.constructor;return v(u)&&s instanceof u?u.prototype:s instanceof W?X:null}},7046:(i,s,u)=>{var m=u(95329);i.exports=m({}.isPrototypeOf)},55629:(i,s,u)=>{var m=u(95329),v=u(90953),_=u(74529),j=u(31692).indexOf,M=u(27748),$=m([].push);i.exports=function(i,s){var u,m=_(i),W=0,X=[];for(u in m)!v(M,u)&&v(m,u)&&$(X,u);for(;s.length>W;)v(m,u=s[W++])&&(~j(X,u)||$(X,u));return X}},14771:(i,s,u)=>{var m=u(55629),v=u(56759);i.exports=Object.keys||function keys(i){return m(i,v)}},36760:(i,s)=>{"use strict";var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,v=m&&!u.call({1:2},1);s.f=v?function propertyIsEnumerable(i){var s=m(this,i);return!!s&&s.enumerable}:u},88929:(i,s,u)=>{var m=u(45526),v=u(96059),_=u(11851);i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i,s=!1,u={};try{(i=m(Object.prototype,"__proto__","set"))(u,[]),s=u instanceof Array}catch(i){}return function setPrototypeOf(u,m){return v(u),_(m),s?i(u,m):u.__proto__=m,u}}():void 0)},95623:(i,s,u)=>{"use strict";var m=u(22885),v=u(9697);i.exports=m?{}.toString:function toString(){return"[object "+v(this)+"]"}},39811:(i,s,u)=>{var m=u(78834),v=u(57475),_=u(10941),j=TypeError;i.exports=function(i,s){var u,M;if("string"===s&&v(u=i.toString)&&!_(M=m(u,i)))return M;if(v(u=i.valueOf)&&!_(M=m(u,i)))return M;if("string"!==s&&v(u=i.toString)&&!_(M=m(u,i)))return M;throw j("Can't convert object to primitive value")}},31136:(i,s,u)=>{var m=u(626),v=u(95329),_=u(10946),j=u(87857),M=u(96059),$=v([].concat);i.exports=m("Reflect","ownKeys")||function ownKeys(i){var s=_.f(M(i)),u=j.f;return u?$(s,u(i)):s}},54058:i=>{i.exports={}},9056:(i,s,u)=>{var m=u(65988).f;i.exports=function(i,s,u){u in i||m(i,u,{configurable:!0,get:function(){return s[u]},set:function(i){s[u]=i}})}},48219:(i,s,u)=>{var m=u(82119),v=TypeError;i.exports=function(i){if(m(i))throw v("Can't call method on "+i);return i}},90904:(i,s,u)=>{var m=u(22885),v=u(65988).f,_=u(32029),j=u(90953),M=u(95623),$=u(99813)("toStringTag");i.exports=function(i,s,u,W){if(i){var X=u?i:i.prototype;j(X,$)||v(X,$,{configurable:!0,value:s}),W&&!m&&_(X,"toString",M)}}},44262:(i,s,u)=>{var m=u(68726),v=u(99418),_=m("keys");i.exports=function(i){return _[i]||(_[i]=v(i))}},63030:(i,s,u)=>{var m=u(21899),v=u(75609),_="__core-js_shared__",j=m[_]||v(_,{});i.exports=j},68726:(i,s,u)=>{var m=u(82529),v=u(63030);(i.exports=function(i,s){return v[i]||(v[i]=void 0!==s?s:{})})("versions",[]).push({version:"3.31.1",mode:m?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},64620:(i,s,u)=>{var m=u(95329),v=u(62435),_=u(85803),j=u(48219),M=m("".charAt),$=m("".charCodeAt),W=m("".slice),createMethod=function(i){return function(s,u){var m,X,Y=_(j(s)),Z=v(u),ee=Y.length;return Z<0||Z>=ee?i?"":void 0:(m=$(Y,Z))<55296||m>56319||Z+1===ee||(X=$(Y,Z+1))<56320||X>57343?i?M(Y,Z):m:i?W(Y,Z,Z+2):X-56320+(m-55296<<10)+65536}};i.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},63405:(i,s,u)=>{var m=u(53385),v=u(95981),_=u(21899).String;i.exports=!!Object.getOwnPropertySymbols&&!v((function(){var i=Symbol();return!_(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&m&&m<41}))},59413:(i,s,u)=>{var m=u(62435),v=Math.max,_=Math.min;i.exports=function(i,s){var u=m(i);return u<0?v(u+s,0):_(u,s)}},74529:(i,s,u)=>{var m=u(37026),v=u(48219);i.exports=function(i){return m(v(i))}},62435:(i,s,u)=>{var m=u(35331);i.exports=function(i){var s=+i;return s!=s||0===s?0:m(s)}},43057:(i,s,u)=>{var m=u(62435),v=Math.min;i.exports=function(i){return i>0?v(m(i),9007199254740991):0}},89678:(i,s,u)=>{var m=u(48219),v=Object;i.exports=function(i){return v(m(i))}},46935:(i,s,u)=>{var m=u(78834),v=u(10941),_=u(56664),j=u(14229),M=u(39811),$=u(99813),W=TypeError,X=$("toPrimitive");i.exports=function(i,s){if(!v(i)||_(i))return i;var u,$=j(i,X);if($){if(void 0===s&&(s="default"),u=m($,i,s),!v(u)||_(u))return u;throw W("Can't convert object to primitive value")}return void 0===s&&(s="number"),M(i,s)}},83894:(i,s,u)=>{var m=u(46935),v=u(56664);i.exports=function(i){var s=m(i,"string");return v(s)?s:s+""}},22885:(i,s,u)=>{var m={};m[u(99813)("toStringTag")]="z",i.exports="[object z]"===String(m)},85803:(i,s,u)=>{var m=u(9697),v=String;i.exports=function(i){if("Symbol"===m(i))throw TypeError("Cannot convert a Symbol value to a string");return v(i)}},69826:i=>{var s=String;i.exports=function(i){try{return s(i)}catch(i){return"Object"}}},99418:(i,s,u)=>{var m=u(95329),v=0,_=Math.random(),j=m(1..toString);i.exports=function(i){return"Symbol("+(void 0===i?"":i)+")_"+j(++v+_,36)}},32302:(i,s,u)=>{var m=u(63405);i.exports=m&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},83937:(i,s,u)=>{var m=u(55746),v=u(95981);i.exports=m&&v((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},47093:(i,s,u)=>{var m=u(21899),v=u(57475),_=m.WeakMap;i.exports=v(_)&&/native code/.test(String(_))},99813:(i,s,u)=>{var m=u(21899),v=u(68726),_=u(90953),j=u(99418),M=u(63405),$=u(32302),W=m.Symbol,X=v("wks"),Y=$?W.for||W:W&&W.withoutSetter||j;i.exports=function(i){return _(X,i)||(X[i]=M&&_(W,i)?W[i]:Y("Symbol."+i)),X[i]}},62864:(i,s,u)=>{"use strict";var m=u(626),v=u(90953),_=u(32029),j=u(7046),M=u(88929),$=u(23489),W=u(9056),X=u(70926),Y=u(14649),Z=u(53794),ee=u(79585),ae=u(55746),ie=u(82529);i.exports=function(i,s,u,le){var ce="stackTraceLimit",pe=le?2:1,de=i.split("."),fe=de[de.length-1],ye=m.apply(null,de);if(ye){var be=ye.prototype;if(!ie&&v(be,"cause")&&delete be.cause,!u)return ye;var _e=m("Error"),we=s((function(i,s){var u=Y(le?s:i,void 0),m=le?new ye(i):new ye;return void 0!==u&&_(m,"message",u),ee(m,we,m.stack,2),this&&j(be,this)&&X(m,this,we),arguments.length>pe&&Z(m,arguments[pe]),m}));if(we.prototype=be,"Error"!==fe?M?M(we,_e):$(we,_e,{name:!0}):ae&&ce in ye&&(W(we,ye,ce),W(we,ye,"prepareStackTrace")),$(we,ye),!ie)try{be.name!==fe&&_(be,"name",fe),be.constructor=we}catch(i){}return we}}},24415:(i,s,u)=>{var m=u(76887),v=u(626),_=u(79730),j=u(95981),M=u(62864),$="AggregateError",W=v($),X=!j((function(){return 1!==W([1]).errors[0]}))&&j((function(){return 7!==W([1],$,{cause:7}).cause}));m({global:!0,constructor:!0,arity:2,forced:X},{AggregateError:M($,(function(i){return function AggregateError(s,u){return _(i,this,arguments)}}),X,!0)})},49812:(i,s,u)=>{"use strict";var m=u(76887),v=u(7046),_=u(249),j=u(88929),M=u(23489),$=u(29290),W=u(32029),X=u(31887),Y=u(53794),Z=u(79585),ee=u(93091),ae=u(14649),ie=u(99813)("toStringTag"),le=Error,ce=[].push,pe=function AggregateError(i,s){var u,m=v(de,this);j?u=j(le(),m?_(this):de):(u=m?this:$(de),W(u,ie,"Error")),void 0!==s&&W(u,"message",ae(s)),Z(u,pe,u.stack,1),arguments.length>2&&Y(u,arguments[2]);var M=[];return ee(i,ce,{that:M}),W(u,"errors",M),u};j?j(pe,le):M(pe,le,{name:!0});var de=pe.prototype=$(le.prototype,{constructor:X(1,pe),message:X(1,""),name:X(1,"AggregateError")});m({global:!0,constructor:!0,arity:2},{AggregateError:pe})},47627:(i,s,u)=>{u(49812)},66274:(i,s,u)=>{"use strict";var m=u(74529),v=u(18479),_=u(12077),j=u(45402),M=u(65988).f,$=u(75105),W=u(23538),X=u(82529),Y=u(55746),Z="Array Iterator",ee=j.set,ae=j.getterFor(Z);i.exports=$(Array,"Array",(function(i,s){ee(this,{type:Z,target:m(i),index:0,kind:s})}),(function(){var i=ae(this),s=i.target,u=i.kind,m=i.index++;return!s||m>=s.length?(i.target=void 0,W(void 0,!0)):W("keys"==u?m:"values"==u?s[m]:[m,s[m]],!1)}),"values");var ie=_.Arguments=_.Array;if(v("keys"),v("values"),v("entries"),!X&&Y&&"values"!==ie.name)try{M(ie,"name",{value:"values"})}catch(i){}},61181:(i,s,u)=>{var m=u(76887),v=u(21899),_=u(79730),j=u(62864),M="WebAssembly",$=v[M],W=7!==Error("e",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(i,s){var u={};u[i]=j(i,s,W),m({global:!0,constructor:!0,arity:1,forced:W},u)},exportWebAssemblyErrorCauseWrapper=function(i,s){if($&&$[i]){var u={};u[i]=j(M+"."+i,s,W),m({target:M,stat:!0,constructor:!0,arity:1,forced:W},u)}};exportGlobalErrorCauseWrapper("Error",(function(i){return function Error(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("EvalError",(function(i){return function EvalError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("RangeError",(function(i){return function RangeError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("ReferenceError",(function(i){return function ReferenceError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("SyntaxError",(function(i){return function SyntaxError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("TypeError",(function(i){return function TypeError(s){return _(i,this,arguments)}})),exportGlobalErrorCauseWrapper("URIError",(function(i){return function URIError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("CompileError",(function(i){return function CompileError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("LinkError",(function(i){return function LinkError(s){return _(i,this,arguments)}})),exportWebAssemblyErrorCauseWrapper("RuntimeError",(function(i){return function RuntimeError(s){return _(i,this,arguments)}}))},73381:(i,s,u)=>{var m=u(76887),v=u(98308);m({target:"Function",proto:!0,forced:Function.bind!==v},{bind:v})},49221:(i,s,u)=>{var m=u(76887),v=u(24420);m({target:"Object",stat:!0,arity:2,forced:Object.assign!==v},{assign:v})},77971:(i,s,u)=>{"use strict";var m=u(64620).charAt,v=u(85803),_=u(45402),j=u(75105),M=u(23538),$="String Iterator",W=_.set,X=_.getterFor($);j(String,"String",(function(i){W(this,{type:$,string:v(i),index:0})}),(function next(){var i,s=X(this),u=s.string,v=s.index;return v>=u.length?M(void 0,!0):(i=m(u,v),s.index+=i.length,M(i,!1))}))},89731:(i,s,u)=>{u(47627)},7634:(i,s,u)=>{u(66274);var m=u(63281),v=u(21899),_=u(9697),j=u(32029),M=u(12077),$=u(99813)("toStringTag");for(var W in m){var X=v[W],Y=X&&X.prototype;Y&&_(Y)!==$&&j(Y,$,W),M[W]=M.Array}},18957:(i,s,u)=>{u(89731);var m=u(50415);u(7634),i.exports=m},28196:(i,s,u)=>{var m=u(16246);i.exports=m},63383:(i,s,u)=>{var m=u(45999);i.exports=m},8269:function(i,s,u){var m;m=void 0!==u.g?u.g:this,i.exports=function(i){if(i.CSS&&i.CSS.escape)return i.CSS.escape;var cssEscape=function(i){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var s,u=String(i),m=u.length,v=-1,_="",j=u.charCodeAt(0);++v=1&&s<=31||127==s||0==v&&s>=48&&s<=57||1==v&&s>=48&&s<=57&&45==j?"\\"+s.toString(16)+" ":0==v&&1==m&&45==s||!(s>=128||45==s||95==s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)?"\\"+u.charAt(v):u.charAt(v):_+="�";return _};return i.CSS||(i.CSS={}),i.CSS.escape=cssEscape,cssEscape}(m)},27698:(i,s,u)=>{"use strict";var m=u(48764).Buffer;function isSpecificValue(i){return i instanceof m||i instanceof Date||i instanceof RegExp}function cloneSpecificValue(i){if(i instanceof m){var s=m.alloc?m.alloc(i.length):new m(i.length);return i.copy(s),s}if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i);throw new Error("Unexpected situation")}function deepCloneArray(i){var s=[];return i.forEach((function(i,u){"object"==typeof i&&null!==i?Array.isArray(i)?s[u]=deepCloneArray(i):isSpecificValue(i)?s[u]=cloneSpecificValue(i):s[u]=v({},i):s[u]=i})),s}function safeGetProperty(i,s){return"__proto__"===s?void 0:i[s]}var v=i.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var i,s,u=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(m){"object"!=typeof m||null===m||Array.isArray(m)||Object.keys(m).forEach((function(_){return s=safeGetProperty(u,_),(i=safeGetProperty(m,_))===u?void 0:"object"!=typeof i||null===i?void(u[_]=i):Array.isArray(i)?void(u[_]=deepCloneArray(i)):isSpecificValue(i)?void(u[_]=cloneSpecificValue(i)):"object"!=typeof s||null===s||Array.isArray(s)?void(u[_]=v({},i)):void(u[_]=v(s,i))}))})),u}},9996:i=>{"use strict";var s=function isMergeableObject(i){return function isNonNullObject(i){return!!i&&"object"==typeof i}(i)&&!function isSpecial(i){var s=Object.prototype.toString.call(i);return"[object RegExp]"===s||"[object Date]"===s||function isReactElement(i){return i.$$typeof===u}(i)}(i)};var u="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(i,s){return!1!==s.clone&&s.isMergeableObject(i)?deepmerge(function emptyTarget(i){return Array.isArray(i)?[]:{}}(i),i,s):i}function defaultArrayMerge(i,s,u){return i.concat(s).map((function(i){return cloneUnlessOtherwiseSpecified(i,u)}))}function getKeys(i){return Object.keys(i).concat(function getEnumerableOwnPropertySymbols(i){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(i).filter((function(s){return Object.propertyIsEnumerable.call(i,s)})):[]}(i))}function propertyIsOnObject(i,s){try{return s in i}catch(i){return!1}}function mergeObject(i,s,u){var m={};return u.isMergeableObject(i)&&getKeys(i).forEach((function(s){m[s]=cloneUnlessOtherwiseSpecified(i[s],u)})),getKeys(s).forEach((function(v){(function propertyIsUnsafe(i,s){return propertyIsOnObject(i,s)&&!(Object.hasOwnProperty.call(i,s)&&Object.propertyIsEnumerable.call(i,s))})(i,v)||(propertyIsOnObject(i,v)&&u.isMergeableObject(s[v])?m[v]=function getMergeFunction(i,s){if(!s.customMerge)return deepmerge;var u=s.customMerge(i);return"function"==typeof u?u:deepmerge}(v,u)(i[v],s[v],u):m[v]=cloneUnlessOtherwiseSpecified(s[v],u))})),m}function deepmerge(i,u,m){(m=m||{}).arrayMerge=m.arrayMerge||defaultArrayMerge,m.isMergeableObject=m.isMergeableObject||s,m.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var v=Array.isArray(u);return v===Array.isArray(i)?v?m.arrayMerge(i,u,m):mergeObject(i,u,m):cloneUnlessOtherwiseSpecified(u,m)}deepmerge.all=function deepmergeAll(i,s){if(!Array.isArray(i))throw new Error("first argument should be an array");return i.reduce((function(i,u){return deepmerge(i,u,s)}),{})};var m=deepmerge;i.exports=m},27856:function(i){i.exports=function(){"use strict";const{entries:i,setPrototypeOf:s,isFrozen:u,getPrototypeOf:m,getOwnPropertyDescriptor:v}=Object;let{freeze:_,seal:j,create:M}=Object,{apply:$,construct:W}="undefined"!=typeof Reflect&&Reflect;_||(_=function freeze(i){return i}),j||(j=function seal(i){return i}),$||($=function apply(i,s,u){return i.apply(s,u)}),W||(W=function construct(i,s){return new i(...s)});const X=unapply(Array.prototype.forEach),Y=unapply(Array.prototype.pop),Z=unapply(Array.prototype.push),ee=unapply(String.prototype.toLowerCase),ae=unapply(String.prototype.toString),ie=unapply(String.prototype.match),le=unapply(String.prototype.replace),ce=unapply(String.prototype.indexOf),pe=unapply(String.prototype.trim),de=unapply(RegExp.prototype.test),fe=unconstruct(TypeError);function unapply(i){return function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v2&&void 0!==arguments[2]?arguments[2]:ee;s&&s(i,null);let _=m.length;for(;_--;){let s=m[_];if("string"==typeof s){const i=v(s);i!==s&&(u(m)||(m[_]=i),s=i)}i[s]=!0}return i}function clone(s){const u=M(null);for(const[m,_]of i(s))void 0!==v(s,m)&&(u[m]=_);return u}function lookupGetter(i,s){for(;null!==i;){const u=v(i,s);if(u){if(u.get)return unapply(u.get);if("function"==typeof u.value)return unapply(u.value)}i=m(i)}function fallbackValue(i){return console.warn("fallback value for",i),null}return fallbackValue}const ye=_(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),be=_(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),_e=_(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),we=_(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Se=_(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),xe=_(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Pe=_(["#text"]),Ie=_(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Te=_(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Re=_(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),qe=_(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),ze=j(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ve=j(/<%[\w\W]*|[\w\W]*%>/gm),We=j(/\${[\w\W]*}/gm),He=j(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=j(/^aria-[\-\w]+$/),Ye=j(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=j(/^(?:\w+script|data):/i),et=j(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),tt=j(/^html$/i);var rt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ze,ERB_EXPR:Ve,TMPLIT_EXPR:We,DATA_ATTR:He,ARIA_ATTR:Xe,IS_ALLOWED_URI:Ye,IS_SCRIPT_OR_DATA:Qe,ATTR_WHITESPACE:et,DOCTYPE_NAME:tt});const nt=function getGlobal(){return"undefined"==typeof window?null:window},ot=function _createTrustedTypesPolicy(i,s){if("object"!=typeof i||"function"!=typeof i.createPolicy)return null;let u=null;const m="data-tt-policy-suffix";s&&s.hasAttribute(m)&&(u=s.getAttribute(m));const v="dompurify"+(u?"#"+u:"");try{return i.createPolicy(v,{createHTML:i=>i,createScriptURL:i=>i})}catch(i){return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nt();const DOMPurify=i=>createDOMPurify(i);if(DOMPurify.version="3.0.6",DOMPurify.removed=[],!s||!s.document||9!==s.document.nodeType)return DOMPurify.isSupported=!1,DOMPurify;let{document:u}=s;const m=u,v=m.currentScript,{DocumentFragment:j,HTMLTemplateElement:$,Node:W,Element:ze,NodeFilter:Ve,NamedNodeMap:We=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:He,DOMParser:Xe,trustedTypes:Qe}=s,et=ze.prototype,at=lookupGetter(et,"cloneNode"),it=lookupGetter(et,"nextSibling"),st=lookupGetter(et,"childNodes"),lt=lookupGetter(et,"parentNode");if("function"==typeof $){const i=u.createElement("template");i.content&&i.content.ownerDocument&&(u=i.content.ownerDocument)}let ct,ut="";const{implementation:pt,createNodeIterator:ht,createDocumentFragment:dt,getElementsByTagName:mt}=u,{importNode:gt}=m;let yt={};DOMPurify.isSupported="function"==typeof i&&"function"==typeof lt&&pt&&void 0!==pt.createHTMLDocument;const{MUSTACHE_EXPR:vt,ERB_EXPR:bt,TMPLIT_EXPR:_t,DATA_ATTR:Et,ARIA_ATTR:wt,IS_SCRIPT_OR_DATA:St,ATTR_WHITESPACE:xt}=rt;let{IS_ALLOWED_URI:kt}=rt,Ot=null;const At=addToSet({},[...ye,...be,..._e,...Se,...Pe]);let Ct=null;const jt=addToSet({},[...Ie,...Te,...Re,...qe]);let Pt=Object.seal(M(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),It=null,Nt=null,Tt=!0,Mt=!0,Rt=!1,Bt=!0,Dt=!1,Lt=!1,Ft=!1,qt=!1,$t=!1,zt=!1,Ut=!1,Vt=!0,Wt=!1;const Kt="user-content-";let Ht=!0,Jt=!1,Gt={},Xt=null;const Yt=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Qt=null;const Zt=addToSet({},["audio","video","img","source","image","track"]);let er=null;const tr=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),rr="http://www.w3.org/1998/Math/MathML",nr="http://www.w3.org/2000/svg",ar="http://www.w3.org/1999/xhtml";let ir=ar,sr=!1,lr=null;const cr=addToSet({},[rr,nr,ar],ae);let ur=null;const pr=["application/xhtml+xml","text/html"],dr="text/html";let fr=null,mr=null;const gr=u.createElement("form"),yr=function isRegexOrFunction(i){return i instanceof RegExp||i instanceof Function},vr=function _parseConfig(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!mr||mr!==i){if(i&&"object"==typeof i||(i={}),i=clone(i),ur=ur=-1===pr.indexOf(i.PARSER_MEDIA_TYPE)?dr:i.PARSER_MEDIA_TYPE,fr="application/xhtml+xml"===ur?ae:ee,Ot="ALLOWED_TAGS"in i?addToSet({},i.ALLOWED_TAGS,fr):At,Ct="ALLOWED_ATTR"in i?addToSet({},i.ALLOWED_ATTR,fr):jt,lr="ALLOWED_NAMESPACES"in i?addToSet({},i.ALLOWED_NAMESPACES,ae):cr,er="ADD_URI_SAFE_ATTR"in i?addToSet(clone(tr),i.ADD_URI_SAFE_ATTR,fr):tr,Qt="ADD_DATA_URI_TAGS"in i?addToSet(clone(Zt),i.ADD_DATA_URI_TAGS,fr):Zt,Xt="FORBID_CONTENTS"in i?addToSet({},i.FORBID_CONTENTS,fr):Yt,It="FORBID_TAGS"in i?addToSet({},i.FORBID_TAGS,fr):{},Nt="FORBID_ATTR"in i?addToSet({},i.FORBID_ATTR,fr):{},Gt="USE_PROFILES"in i&&i.USE_PROFILES,Tt=!1!==i.ALLOW_ARIA_ATTR,Mt=!1!==i.ALLOW_DATA_ATTR,Rt=i.ALLOW_UNKNOWN_PROTOCOLS||!1,Bt=!1!==i.ALLOW_SELF_CLOSE_IN_ATTR,Dt=i.SAFE_FOR_TEMPLATES||!1,Lt=i.WHOLE_DOCUMENT||!1,$t=i.RETURN_DOM||!1,zt=i.RETURN_DOM_FRAGMENT||!1,Ut=i.RETURN_TRUSTED_TYPE||!1,qt=i.FORCE_BODY||!1,Vt=!1!==i.SANITIZE_DOM,Wt=i.SANITIZE_NAMED_PROPS||!1,Ht=!1!==i.KEEP_CONTENT,Jt=i.IN_PLACE||!1,kt=i.ALLOWED_URI_REGEXP||Ye,ir=i.NAMESPACE||ar,Pt=i.CUSTOM_ELEMENT_HANDLING||{},i.CUSTOM_ELEMENT_HANDLING&&yr(i.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Pt.tagNameCheck=i.CUSTOM_ELEMENT_HANDLING.tagNameCheck),i.CUSTOM_ELEMENT_HANDLING&&yr(i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Pt.attributeNameCheck=i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),i.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Pt.allowCustomizedBuiltInElements=i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Dt&&(Mt=!1),zt&&($t=!0),Gt&&(Ot=addToSet({},[...Pe]),Ct=[],!0===Gt.html&&(addToSet(Ot,ye),addToSet(Ct,Ie)),!0===Gt.svg&&(addToSet(Ot,be),addToSet(Ct,Te),addToSet(Ct,qe)),!0===Gt.svgFilters&&(addToSet(Ot,_e),addToSet(Ct,Te),addToSet(Ct,qe)),!0===Gt.mathMl&&(addToSet(Ot,Se),addToSet(Ct,Re),addToSet(Ct,qe))),i.ADD_TAGS&&(Ot===At&&(Ot=clone(Ot)),addToSet(Ot,i.ADD_TAGS,fr)),i.ADD_ATTR&&(Ct===jt&&(Ct=clone(Ct)),addToSet(Ct,i.ADD_ATTR,fr)),i.ADD_URI_SAFE_ATTR&&addToSet(er,i.ADD_URI_SAFE_ATTR,fr),i.FORBID_CONTENTS&&(Xt===Yt&&(Xt=clone(Xt)),addToSet(Xt,i.FORBID_CONTENTS,fr)),Ht&&(Ot["#text"]=!0),Lt&&addToSet(Ot,["html","head","body"]),Ot.table&&(addToSet(Ot,["tbody"]),delete It.tbody),i.TRUSTED_TYPES_POLICY){if("function"!=typeof i.TRUSTED_TYPES_POLICY.createHTML)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof i.TRUSTED_TYPES_POLICY.createScriptURL)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ct=i.TRUSTED_TYPES_POLICY,ut=ct.createHTML("")}else void 0===ct&&(ct=ot(Qe,v)),null!==ct&&"string"==typeof ut&&(ut=ct.createHTML(""));_&&_(i),mr=i}},br=addToSet({},["mi","mo","mn","ms","mtext"]),_r=addToSet({},["foreignobject","desc","title","annotation-xml"]),Er=addToSet({},["title","style","font","a","script"]),wr=addToSet({},be);addToSet(wr,_e),addToSet(wr,we);const Sr=addToSet({},Se);addToSet(Sr,xe);const xr=function _checkValidNamespace(i){let s=lt(i);s&&s.tagName||(s={namespaceURI:ir,tagName:"template"});const u=ee(i.tagName),m=ee(s.tagName);return!!lr[i.namespaceURI]&&(i.namespaceURI===nr?s.namespaceURI===ar?"svg"===u:s.namespaceURI===rr?"svg"===u&&("annotation-xml"===m||br[m]):Boolean(wr[u]):i.namespaceURI===rr?s.namespaceURI===ar?"math"===u:s.namespaceURI===nr?"math"===u&&_r[m]:Boolean(Sr[u]):i.namespaceURI===ar?!(s.namespaceURI===nr&&!_r[m])&&!(s.namespaceURI===rr&&!br[m])&&!Sr[u]&&(Er[u]||!wr[u]):!("application/xhtml+xml"!==ur||!lr[i.namespaceURI]))},kr=function _forceRemove(i){Z(DOMPurify.removed,{element:i});try{i.parentNode.removeChild(i)}catch(s){i.remove()}},Or=function _removeAttribute(i,s){try{Z(DOMPurify.removed,{attribute:s.getAttributeNode(i),from:s})}catch(i){Z(DOMPurify.removed,{attribute:null,from:s})}if(s.removeAttribute(i),"is"===i&&!Ct[i])if($t||zt)try{kr(s)}catch(i){}else try{s.setAttribute(i,"")}catch(i){}},Ar=function _initDocument(i){let s=null,m=null;if(qt)i=""+i;else{const s=ie(i,/^[\r\n\t ]+/);m=s&&s[0]}"application/xhtml+xml"===ur&&ir===ar&&(i=''+i+"");const v=ct?ct.createHTML(i):i;if(ir===ar)try{s=(new Xe).parseFromString(v,ur)}catch(i){}if(!s||!s.documentElement){s=pt.createDocument(ir,"template",null);try{s.documentElement.innerHTML=sr?ut:v}catch(i){}}const _=s.body||s.documentElement;return i&&m&&_.insertBefore(u.createTextNode(m),_.childNodes[0]||null),ir===ar?mt.call(s,Lt?"html":"body")[0]:Lt?s.documentElement:_},Cr=function _createNodeIterator(i){return ht.call(i.ownerDocument||i,i,Ve.SHOW_ELEMENT|Ve.SHOW_COMMENT|Ve.SHOW_TEXT,null)},jr=function _isClobbered(i){return i instanceof He&&("string"!=typeof i.nodeName||"string"!=typeof i.textContent||"function"!=typeof i.removeChild||!(i.attributes instanceof We)||"function"!=typeof i.removeAttribute||"function"!=typeof i.setAttribute||"string"!=typeof i.namespaceURI||"function"!=typeof i.insertBefore||"function"!=typeof i.hasChildNodes)},Pr=function _isNode(i){return"function"==typeof W&&i instanceof W},Ir=function _executeHook(i,s,u){yt[i]&&X(yt[i],(i=>{i.call(DOMPurify,s,u,mr)}))},Nr=function _sanitizeElements(i){let s=null;if(Ir("beforeSanitizeElements",i,null),jr(i))return kr(i),!0;const u=fr(i.nodeName);if(Ir("uponSanitizeElement",i,{tagName:u,allowedTags:Ot}),i.hasChildNodes()&&!Pr(i.firstElementChild)&&de(/<[/\w]/g,i.innerHTML)&&de(/<[/\w]/g,i.textContent))return kr(i),!0;if(!Ot[u]||It[u]){if(!It[u]&&Mr(u)){if(Pt.tagNameCheck instanceof RegExp&&de(Pt.tagNameCheck,u))return!1;if(Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(u))return!1}if(Ht&&!Xt[u]){const s=lt(i)||i.parentNode,u=st(i)||i.childNodes;if(u&&s)for(let m=u.length-1;m>=0;--m)s.insertBefore(at(u[m],!0),it(i))}return kr(i),!0}return i instanceof ze&&!xr(i)?(kr(i),!0):"noscript"!==u&&"noembed"!==u&&"noframes"!==u||!de(/<\/no(script|embed|frames)/i,i.innerHTML)?(Dt&&3===i.nodeType&&(s=i.textContent,X([vt,bt,_t],(i=>{s=le(s,i," ")})),i.textContent!==s&&(Z(DOMPurify.removed,{element:i.cloneNode()}),i.textContent=s)),Ir("afterSanitizeElements",i,null),!1):(kr(i),!0)},Tr=function _isValidAttribute(i,s,m){if(Vt&&("id"===s||"name"===s)&&(m in u||m in gr))return!1;if(Mt&&!Nt[s]&&de(Et,s));else if(Tt&&de(wt,s));else if(!Ct[s]||Nt[s]){if(!(Mr(i)&&(Pt.tagNameCheck instanceof RegExp&&de(Pt.tagNameCheck,i)||Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(i))&&(Pt.attributeNameCheck instanceof RegExp&&de(Pt.attributeNameCheck,s)||Pt.attributeNameCheck instanceof Function&&Pt.attributeNameCheck(s))||"is"===s&&Pt.allowCustomizedBuiltInElements&&(Pt.tagNameCheck instanceof RegExp&&de(Pt.tagNameCheck,m)||Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(m))))return!1}else if(er[s]);else if(de(kt,le(m,xt,"")));else if("src"!==s&&"xlink:href"!==s&&"href"!==s||"script"===i||0!==ce(m,"data:")||!Qt[i])if(Rt&&!de(St,le(m,xt,"")));else if(m)return!1;return!0},Mr=function _isBasicCustomElement(i){return i.indexOf("-")>0},Rr=function _sanitizeAttributes(i){Ir("beforeSanitizeAttributes",i,null);const{attributes:s}=i;if(!s)return;const u={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ct};let m=s.length;for(;m--;){const v=s[m],{name:_,namespaceURI:j,value:M}=v,$=fr(_);let W="value"===_?M:pe(M);if(u.attrName=$,u.attrValue=W,u.keepAttr=!0,u.forceKeepAttr=void 0,Ir("uponSanitizeAttribute",i,u),W=u.attrValue,u.forceKeepAttr)continue;if(Or(_,i),!u.keepAttr)continue;if(!Bt&&de(/\/>/i,W)){Or(_,i);continue}Dt&&X([vt,bt,_t],(i=>{W=le(W,i," ")}));const Z=fr(i.nodeName);if(Tr(Z,$,W)){if(!Wt||"id"!==$&&"name"!==$||(Or(_,i),W=Kt+W),ct&&"object"==typeof Qe&&"function"==typeof Qe.getAttributeType)if(j);else switch(Qe.getAttributeType(Z,$)){case"TrustedHTML":W=ct.createHTML(W);break;case"TrustedScriptURL":W=ct.createScriptURL(W)}try{j?i.setAttributeNS(j,_,W):i.setAttribute(_,W),Y(DOMPurify.removed)}catch(i){}}}Ir("afterSanitizeAttributes",i,null)},Br=function _sanitizeShadowDOM(i){let s=null;const u=Cr(i);for(Ir("beforeSanitizeShadowDOM",i,null);s=u.nextNode();)Ir("uponSanitizeShadowNode",s,null),Nr(s)||(s.content instanceof j&&_sanitizeShadowDOM(s.content),Rr(s));Ir("afterSanitizeShadowDOM",i,null)};return DOMPurify.sanitize=function(i){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=null,v=null,_=null,M=null;if(sr=!i,sr&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Pr(i)){if("function"!=typeof i.toString)throw fe("toString is not a function");if("string"!=typeof(i=i.toString()))throw fe("dirty is not a string, aborting")}if(!DOMPurify.isSupported)return i;if(Ft||vr(s),DOMPurify.removed=[],"string"==typeof i&&(Jt=!1),Jt){if(i.nodeName){const s=fr(i.nodeName);if(!Ot[s]||It[s])throw fe("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof W)u=Ar("\x3c!----\x3e"),v=u.ownerDocument.importNode(i,!0),1===v.nodeType&&"BODY"===v.nodeName||"HTML"===v.nodeName?u=v:u.appendChild(v);else{if(!$t&&!Dt&&!Lt&&-1===i.indexOf("<"))return ct&&Ut?ct.createHTML(i):i;if(u=Ar(i),!u)return $t?null:Ut?ut:""}u&&qt&&kr(u.firstChild);const $=Cr(Jt?i:u);for(;_=$.nextNode();)Nr(_)||(_.content instanceof j&&Br(_.content),Rr(_));if(Jt)return i;if($t){if(zt)for(M=dt.call(u.ownerDocument);u.firstChild;)M.appendChild(u.firstChild);else M=u;return(Ct.shadowroot||Ct.shadowrootmode)&&(M=gt.call(m,M,!0)),M}let Y=Lt?u.outerHTML:u.innerHTML;return Lt&&Ot["!doctype"]&&u.ownerDocument&&u.ownerDocument.doctype&&u.ownerDocument.doctype.name&&de(tt,u.ownerDocument.doctype.name)&&(Y="\n"+Y),Dt&&X([vt,bt,_t],(i=>{Y=le(Y,i," ")})),ct&&Ut?ct.createHTML(Y):Y},DOMPurify.setConfig=function(){vr(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ft=!0},DOMPurify.clearConfig=function(){mr=null,Ft=!1},DOMPurify.isValidAttribute=function(i,s,u){mr||vr({});const m=fr(i),v=fr(s);return Tr(m,v,u)},DOMPurify.addHook=function(i,s){"function"==typeof s&&(yt[i]=yt[i]||[],Z(yt[i],s))},DOMPurify.removeHook=function(i){if(yt[i])return Y(yt[i])},DOMPurify.removeHooks=function(i){yt[i]&&(yt[i]=[])},DOMPurify.removeAllHooks=function(){yt={}},DOMPurify}return createDOMPurify()}()},69450:i=>{"use strict";class SubRange{constructor(i,s){this.low=i,this.high=s,this.length=1+s-i}overlaps(i){return!(this.highi.high)}touches(i){return!(this.high+1i.high)}add(i){return new SubRange(Math.min(this.low,i.low),Math.max(this.high,i.high))}subtract(i){return i.low<=this.low&&i.high>=this.high?[]:i.low>this.low&&i.highi+s.length),0)}add(i,s){var _add=i=>{for(var s=0;s{for(var s=0;s{for(var s=0;s{for(var u=s.low;u<=s.high;)i.push(u),u++;return i}),[])}subranges(){return this.ranges.map((i=>({low:i.low,high:i.high,length:1+i.high-i.low})))}}i.exports=DRange},17187:i=>{"use strict";var s,u="object"==typeof Reflect?Reflect:null,m=u&&"function"==typeof u.apply?u.apply:function ReflectApply(i,s,u){return Function.prototype.apply.call(i,s,u)};s=u&&"function"==typeof u.ownKeys?u.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i).concat(Object.getOwnPropertySymbols(i))}:function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i)};var v=Number.isNaN||function NumberIsNaN(i){return i!=i};function EventEmitter(){EventEmitter.init.call(this)}i.exports=EventEmitter,i.exports.once=function once(i,s){return new Promise((function(u,m){function errorListener(u){i.removeListener(s,resolver),m(u)}function resolver(){"function"==typeof i.removeListener&&i.removeListener("error",errorListener),u([].slice.call(arguments))}eventTargetAgnosticAddListener(i,s,resolver,{once:!0}),"error"!==s&&function addErrorHandlerIfEventEmitter(i,s,u){"function"==typeof i.on&&eventTargetAgnosticAddListener(i,"error",s,u)}(i,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(i){if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i)}function _getMaxListeners(i){return void 0===i._maxListeners?EventEmitter.defaultMaxListeners:i._maxListeners}function _addListener(i,s,u,m){var v,_,j;if(checkListener(u),void 0===(_=i._events)?(_=i._events=Object.create(null),i._eventsCount=0):(void 0!==_.newListener&&(i.emit("newListener",s,u.listener?u.listener:u),_=i._events),j=_[s]),void 0===j)j=_[s]=u,++i._eventsCount;else if("function"==typeof j?j=_[s]=m?[u,j]:[j,u]:m?j.unshift(u):j.push(u),(v=_getMaxListeners(i))>0&&j.length>v&&!j.warned){j.warned=!0;var M=new Error("Possible EventEmitter memory leak detected. "+j.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");M.name="MaxListenersExceededWarning",M.emitter=i,M.type=s,M.count=j.length,function ProcessEmitWarning(i){console&&console.warn&&console.warn(i)}(M)}return i}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(i,s,u){var m={fired:!1,wrapFn:void 0,target:i,type:s,listener:u},v=onceWrapper.bind(m);return v.listener=u,m.wrapFn=v,v}function _listeners(i,s,u){var m=i._events;if(void 0===m)return[];var v=m[s];return void 0===v?[]:"function"==typeof v?u?[v.listener||v]:[v]:u?function unwrapListeners(i){for(var s=new Array(i.length),u=0;u0&&(j=s[0]),j instanceof Error)throw j;var M=new Error("Unhandled error."+(j?" ("+j.message+")":""));throw M.context=j,M}var $=_[i];if(void 0===$)return!1;if("function"==typeof $)m($,this,s);else{var W=$.length,X=arrayClone($,W);for(u=0;u=0;_--)if(u[_]===s||u[_].listener===s){j=u[_].listener,v=_;break}if(v<0)return this;0===v?u.shift():function spliceOne(i,s){for(;s+1=0;m--)this.removeListener(i,s[m]);return this},EventEmitter.prototype.listeners=function listeners(i){return _listeners(this,i,!0)},EventEmitter.prototype.rawListeners=function rawListeners(i){return _listeners(this,i,!1)},EventEmitter.listenerCount=function(i,s){return"function"==typeof i.listenerCount?i.listenerCount(s):listenerCount.call(i,s)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?s(this._events):[]}},21102:(i,s,u)=>{"use strict";var m=u(46291),v=create(Error);function create(i){return FormattedError.displayName=i.displayName||i.name,FormattedError;function FormattedError(s){return s&&(s=m.apply(null,arguments)),new i(s)}}i.exports=v,v.eval=create(EvalError),v.range=create(RangeError),v.reference=create(ReferenceError),v.syntax=create(SyntaxError),v.type=create(TypeError),v.uri=create(URIError),v.create=create},46291:i=>{!function(){var s;function format(i){for(var s,u,m,v,_=1,j=[].slice.call(arguments),M=0,$=i.length,W="",X=!1,Y=!1,nextArg=function(){return j[_++]},slurpNumber=function(){for(var u="";/\d/.test(i[M]);)u+=i[M++],s=i[M];return u.length>0?parseInt(u):null};M<$;++M)if(s=i[M],X)switch(X=!1,"."==s?(Y=!1,s=i[++M]):"0"==s&&"."==i[M+1]?(Y=!0,s=i[M+=2]):Y=!0,v=slurpNumber(),s){case"b":W+=parseInt(nextArg(),10).toString(2);break;case"c":W+="string"==typeof(u=nextArg())||u instanceof String?u:String.fromCharCode(parseInt(u,10));break;case"d":W+=parseInt(nextArg(),10);break;case"f":m=String(parseFloat(nextArg()).toFixed(v||6)),W+=Y?m:m.replace(/^0/,"");break;case"j":W+=JSON.stringify(nextArg());break;case"o":W+="0"+parseInt(nextArg(),10).toString(8);break;case"s":W+=nextArg();break;case"x":W+="0x"+parseInt(nextArg(),10).toString(16);break;case"X":W+="0x"+parseInt(nextArg(),10).toString(16).toUpperCase();break;default:W+=s}else"%"===s?X=!0:W+=s;return W}(s=i.exports=format).format=format,s.vsprintf=function vsprintf(i,s){return format.apply(null,[i].concat(s))},"undefined"!=typeof console&&"function"==typeof console.log&&(s.printf=function printf(){console.log(format.apply(null,arguments))})}()},17648:i=>{"use strict";var s=Array.prototype.slice,u=Object.prototype.toString;i.exports=function bind(i){var m=this;if("function"!=typeof m||"[object Function]"!==u.call(m))throw new TypeError("Function.prototype.bind called on incompatible "+m);for(var v,_=s.call(arguments,1),j=Math.max(0,m.length-_.length),M=[],$=0;${"use strict";var m=u(17648);i.exports=Function.prototype.bind||m},40210:(i,s,u)=>{"use strict";var m,v=SyntaxError,_=Function,j=TypeError,getEvalledConstructor=function(i){try{return _('"use strict"; return ('+i+").constructor;")()}catch(i){}},M=Object.getOwnPropertyDescriptor;if(M)try{M({},"")}catch(i){M=null}var throwTypeError=function(){throw new j},$=M?function(){try{return throwTypeError}catch(i){try{return M(arguments,"callee").get}catch(i){return throwTypeError}}}():throwTypeError,W=u(41405)(),X=u(28185)(),Y=Object.getPrototypeOf||(X?function(i){return i.__proto__}:null),Z={},ee="undefined"!=typeof Uint8Array&&Y?Y(Uint8Array):m,ae={"%AggregateError%":"undefined"==typeof AggregateError?m:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?m:ArrayBuffer,"%ArrayIteratorPrototype%":W&&Y?Y([][Symbol.iterator]()):m,"%AsyncFromSyncIteratorPrototype%":m,"%AsyncFunction%":Z,"%AsyncGenerator%":Z,"%AsyncGeneratorFunction%":Z,"%AsyncIteratorPrototype%":Z,"%Atomics%":"undefined"==typeof Atomics?m:Atomics,"%BigInt%":"undefined"==typeof BigInt?m:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?m:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?m:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?m:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?m:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?m:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?m:FinalizationRegistry,"%Function%":_,"%GeneratorFunction%":Z,"%Int8Array%":"undefined"==typeof Int8Array?m:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?m:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?m:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":W&&Y?Y(Y([][Symbol.iterator]())):m,"%JSON%":"object"==typeof JSON?JSON:m,"%Map%":"undefined"==typeof Map?m:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&W&&Y?Y((new Map)[Symbol.iterator]()):m,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?m:Promise,"%Proxy%":"undefined"==typeof Proxy?m:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?m:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?m:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&W&&Y?Y((new Set)[Symbol.iterator]()):m,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?m:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":W&&Y?Y(""[Symbol.iterator]()):m,"%Symbol%":W?Symbol:m,"%SyntaxError%":v,"%ThrowTypeError%":$,"%TypedArray%":ee,"%TypeError%":j,"%Uint8Array%":"undefined"==typeof Uint8Array?m:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?m:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?m:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?m:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?m:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?m:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?m:WeakSet};if(Y)try{null.error}catch(i){var ie=Y(Y(i));ae["%Error.prototype%"]=ie}var le=function doEval(i){var s;if("%AsyncFunction%"===i)s=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===i)s=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===i)s=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===i){var u=doEval("%AsyncGeneratorFunction%");u&&(s=u.prototype)}else if("%AsyncIteratorPrototype%"===i){var m=doEval("%AsyncGenerator%");m&&Y&&(s=Y(m.prototype))}return ae[i]=s,s},ce={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},pe=u(58612),de=u(17642),fe=pe.call(Function.call,Array.prototype.concat),ye=pe.call(Function.apply,Array.prototype.splice),be=pe.call(Function.call,String.prototype.replace),_e=pe.call(Function.call,String.prototype.slice),we=pe.call(Function.call,RegExp.prototype.exec),Se=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,xe=/\\(\\)?/g,Pe=function getBaseIntrinsic(i,s){var u,m=i;if(de(ce,m)&&(m="%"+(u=ce[m])[0]+"%"),de(ae,m)){var _=ae[m];if(_===Z&&(_=le(m)),void 0===_&&!s)throw new j("intrinsic "+i+" exists, but is not available. Please file an issue!");return{alias:u,name:m,value:_}}throw new v("intrinsic "+i+" does not exist!")};i.exports=function GetIntrinsic(i,s){if("string"!=typeof i||0===i.length)throw new j("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof s)throw new j('"allowMissing" argument must be a boolean');if(null===we(/^%?[^%]*%?$/,i))throw new v("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var u=function stringToPath(i){var s=_e(i,0,1),u=_e(i,-1);if("%"===s&&"%"!==u)throw new v("invalid intrinsic syntax, expected closing `%`");if("%"===u&&"%"!==s)throw new v("invalid intrinsic syntax, expected opening `%`");var m=[];return be(i,Se,(function(i,s,u,v){m[m.length]=u?be(v,xe,"$1"):s||i})),m}(i),m=u.length>0?u[0]:"",_=Pe("%"+m+"%",s),$=_.name,W=_.value,X=!1,Y=_.alias;Y&&(m=Y[0],ye(u,fe([0,1],Y)));for(var Z=1,ee=!0;Z=u.length){var pe=M(W,ie);W=(ee=!!pe)&&"get"in pe&&!("originalValue"in pe.get)?pe.get:W[ie]}else ee=de(W,ie),W=W[ie];ee&&!X&&(ae[$]=W)}}return W}},28185:i=>{"use strict";var s={foo:{}},u=Object;i.exports=function hasProto(){return{__proto__:s}.foo===s.foo&&!({__proto__:null}instanceof u)}},41405:(i,s,u)=>{"use strict";var m="undefined"!=typeof Symbol&&Symbol,v=u(55419);i.exports=function hasNativeSymbols(){return"function"==typeof m&&("function"==typeof Symbol&&("symbol"==typeof m("foo")&&("symbol"==typeof Symbol("bar")&&v())))}},55419:i=>{"use strict";i.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var i={},s=Symbol("test"),u=Object(s);if("string"==typeof s)return!1;if("[object Symbol]"!==Object.prototype.toString.call(s))return!1;if("[object Symbol]"!==Object.prototype.toString.call(u))return!1;for(s in i[s]=42,i)return!1;if("function"==typeof Object.keys&&0!==Object.keys(i).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(i).length)return!1;var m=Object.getOwnPropertySymbols(i);if(1!==m.length||m[0]!==s)return!1;if(!Object.prototype.propertyIsEnumerable.call(i,s))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var v=Object.getOwnPropertyDescriptor(i,s);if(42!==v.value||!0!==v.enumerable)return!1}return!0}},17642:(i,s,u)=>{"use strict";var m=u(58612);i.exports=m.call(Function.call,Object.prototype.hasOwnProperty)},47802:i=>{function deepFreeze(i){return i instanceof Map?i.clear=i.delete=i.set=function(){throw new Error("map is read-only")}:i instanceof Set&&(i.add=i.clear=i.delete=function(){throw new Error("set is read-only")}),Object.freeze(i),Object.getOwnPropertyNames(i).forEach((function(s){var u=i[s];"object"!=typeof u||Object.isFrozen(u)||deepFreeze(u)})),i}var s=deepFreeze,u=deepFreeze;s.default=u;class Response{constructor(i){void 0===i.data&&(i.data={}),this.data=i.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(i){return i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function inherit(i,...s){const u=Object.create(null);for(const s in i)u[s]=i[s];return s.forEach((function(i){for(const s in i)u[s]=i[s]})),u}const emitsWrappingTags=i=>!!i.kind;class HTMLRenderer{constructor(i,s){this.buffer="",this.classPrefix=s.classPrefix,i.walk(this)}addText(i){this.buffer+=escapeHTML(i)}openNode(i){if(!emitsWrappingTags(i))return;let s=i.kind;i.sublanguage||(s=`${this.classPrefix}${s}`),this.span(s)}closeNode(i){emitsWrappingTags(i)&&(this.buffer+="")}value(){return this.buffer}span(i){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(i){this.top.children.push(i)}openNode(i){const s={kind:i,children:[]};this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(i){return this.constructor._walk(i,this.rootNode)}static _walk(i,s){return"string"==typeof s?i.addText(s):s.children&&(i.openNode(s),s.children.forEach((s=>this._walk(i,s))),i.closeNode(s)),i}static _collapse(i){"string"!=typeof i&&i.children&&(i.children.every((i=>"string"==typeof i))?i.children=[i.children.join("")]:i.children.forEach((i=>{TokenTree._collapse(i)})))}}class TokenTreeEmitter extends TokenTree{constructor(i){super(),this.options=i}addKeyword(i,s){""!==i&&(this.openNode(s),this.addText(i),this.closeNode())}addText(i){""!==i&&this.add(i)}addSublanguage(i,s){const u=i.root;u.kind=s,u.sublanguage=!0,this.add(u)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(i){return i?"string"==typeof i?i:i.source:null}const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const v="[a-zA-Z]\\w*",_="[a-zA-Z_]\\w*",j="\\b\\d+(\\.\\d+)?",M="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",$="\\b(0b[01]+)",W={begin:"\\\\[\\s\\S]",relevance:0},X={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[W]},Y={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[W]},Z={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(i,s,u={}){const m=inherit({className:"comment",begin:i,end:s,contains:[]},u);return m.contains.push(Z),m.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),m},ee=COMMENT("//","$"),ae=COMMENT("/\\*","\\*/"),ie=COMMENT("#","$"),le={className:"number",begin:j,relevance:0},ce={className:"number",begin:M,relevance:0},pe={className:"number",begin:$,relevance:0},de={className:"number",begin:j+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},fe={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[W,{begin:/\[/,end:/\]/,relevance:0,contains:[W]}]}]},ye={className:"title",begin:v,relevance:0},be={className:"title",begin:_,relevance:0},_e={begin:"\\.\\s*"+_,relevance:0};var we=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:v,UNDERSCORE_IDENT_RE:_,NUMBER_RE:j,C_NUMBER_RE:M,BINARY_NUMBER_RE:$,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(i={})=>{const s=/^#![ ]*\//;return i.binary&&(i.begin=function concat(...i){return i.map((i=>source(i))).join("")}(s,/.*\b/,i.binary,/\b.*/)),inherit({className:"meta",begin:s,end:/$/,relevance:0,"on:begin":(i,s)=>{0!==i.index&&s.ignoreMatch()}},i)},BACKSLASH_ESCAPE:W,APOS_STRING_MODE:X,QUOTE_STRING_MODE:Y,PHRASAL_WORDS_MODE:Z,COMMENT,C_LINE_COMMENT_MODE:ee,C_BLOCK_COMMENT_MODE:ae,HASH_COMMENT_MODE:ie,NUMBER_MODE:le,C_NUMBER_MODE:ce,BINARY_NUMBER_MODE:pe,CSS_NUMBER_MODE:de,REGEXP_MODE:fe,TITLE_MODE:ye,UNDERSCORE_TITLE_MODE:be,METHOD_GUARD:_e,END_SAME_AS_BEGIN:function(i){return Object.assign(i,{"on:begin":(i,s)=>{s.data._beginMatch=i[1]},"on:end":(i,s)=>{s.data._beginMatch!==i[1]&&s.ignoreMatch()}})}});function skipIfhasPrecedingDot(i,s){"."===i.input[i.index-1]&&s.ignoreMatch()}function beginKeywords(i,s){s&&i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",i.__beforeBegin=skipIfhasPrecedingDot,i.keywords=i.keywords||i.beginKeywords,delete i.beginKeywords,void 0===i.relevance&&(i.relevance=0))}function compileIllegal(i,s){Array.isArray(i.illegal)&&(i.illegal=function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}(...i.illegal))}function compileMatch(i,s){if(i.match){if(i.begin||i.end)throw new Error("begin & end are not supported with match");i.begin=i.match,delete i.match}}function compileRelevance(i,s){void 0===i.relevance&&(i.relevance=1)}const Se=["of","and","for","in","not","or","if","then","parent","list","value"],xe="keyword";function compileKeywords(i,s,u=xe){const m={};return"string"==typeof i?compileList(u,i.split(" ")):Array.isArray(i)?compileList(u,i):Object.keys(i).forEach((function(u){Object.assign(m,compileKeywords(i[u],s,u))})),m;function compileList(i,u){s&&(u=u.map((i=>i.toLowerCase()))),u.forEach((function(s){const u=s.split("|");m[u[0]]=[i,scoreForKeyword(u[0],u[1])]}))}}function scoreForKeyword(i,s){return s?Number(s):function commonKeyword(i){return Se.includes(i.toLowerCase())}(i)?0:1}function compileLanguage(i,{plugins:s}){function langRe(s,u){return new RegExp(source(s),"m"+(i.case_insensitive?"i":"")+(u?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,i]),this.matchAt+=function countMatchGroups(i){return new RegExp(i.toString()+"|").exec("").length-1}(i)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const i=this.regexes.map((i=>i[1]));this.matcherRe=langRe(function join(i,s="|"){let u=0;return i.map((i=>{u+=1;const s=u;let v=source(i),_="";for(;v.length>0;){const i=m.exec(v);if(!i){_+=v;break}_+=v.substring(0,i.index),v=v.substring(i.index+i[0].length),"\\"===i[0][0]&&i[1]?_+="\\"+String(Number(i[1])+s):(_+=i[0],"("===i[0]&&u++)}return _})).map((i=>`(${i})`)).join(s)}(i),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;const s=this.matcherRe.exec(i);if(!s)return null;const u=s.findIndex(((i,s)=>s>0&&void 0!==i)),m=this.matchIndexes[u];return s.splice(0,u),Object.assign(s,m)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return this.multiRegexes[i];const s=new MultiRegex;return this.rules.slice(i).forEach((([i,u])=>s.addRule(i,u))),s.compile(),this.multiRegexes[i]=s,s}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(i,s){this.rules.push([i,s]),"begin"===s.type&&this.count++}exec(i){const s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let u=s.exec(i);if(this.resumingScanAtSamePosition())if(u&&u.index===this.lastIndex);else{const s=this.getMatcher(0);s.lastIndex=this.lastIndex+1,u=s.exec(i)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}if(i.compilerExtensions||(i.compilerExtensions=[]),i.contains&&i.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return i.classNameAliases=inherit(i.classNameAliases||{}),function compileMode(s,u){const m=s;if(s.isCompiled)return m;[compileMatch].forEach((i=>i(s,u))),i.compilerExtensions.forEach((i=>i(s,u))),s.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((i=>i(s,u))),s.isCompiled=!0;let v=null;if("object"==typeof s.keywords&&(v=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=compileKeywords(s.keywords,i.case_insensitive)),s.lexemes&&v)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return v=v||s.lexemes||/\w+/,m.keywordPatternRe=langRe(v,!0),u&&(s.begin||(s.begin=/\B|\b/),m.beginRe=langRe(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(m.endRe=langRe(s.end)),m.terminatorEnd=source(s.end)||"",s.endsWithParent&&u.terminatorEnd&&(m.terminatorEnd+=(s.end?"|":"")+u.terminatorEnd)),s.illegal&&(m.illegalRe=langRe(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(i){return function expandOrCloneMode(i){i.variants&&!i.cachedVariants&&(i.cachedVariants=i.variants.map((function(s){return inherit(i,{variants:null},s)})));if(i.cachedVariants)return i.cachedVariants;if(dependencyOnParent(i))return inherit(i,{starts:i.starts?inherit(i.starts):null});if(Object.isFrozen(i))return inherit(i);return i}("self"===i?s:i)}))),s.contains.forEach((function(i){compileMode(i,m)})),s.starts&&compileMode(s.starts,u),m.matcher=function buildModeRegex(i){const s=new ResumableMultiRegex;return i.contains.forEach((i=>s.addRule(i.begin,{rule:i,type:"begin"}))),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}(m),m}(i)}function dependencyOnParent(i){return!!i&&(i.endsWithParent||dependencyOnParent(i.starts))}function BuildVuePlugin(i){const s={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!i.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let s={};return this.autoDetect?(s=i.highlightAuto(this.code),this.detectedLanguage=s.language):(s=i.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),s.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(i){return Boolean(i||""===i)}(this.autodetect)},ignoreIllegals:()=>!0},render(i){return i("pre",{},[i("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:s,VuePlugin:{install(i){i.component("highlightjs",s)}}}}const Pe={"after:highlightElement":({el:i,result:s,text:u})=>{const m=nodeStream(i);if(!m.length)return;const v=document.createElement("div");v.innerHTML=s.value,s.value=function mergeStreams(i,s,u){let m=0,v="";const _=[];function selectStream(){return i.length&&s.length?i[0].offset!==s[0].offset?i[0].offset"}function close(i){v+=""}function render(i){("start"===i.event?open:close)(i.node)}for(;i.length||s.length;){let s=selectStream();if(v+=escapeHTML(u.substring(m,s[0].offset)),m=s[0].offset,s===i){_.reverse().forEach(close);do{render(s.splice(0,1)[0]),s=selectStream()}while(s===i&&s.length&&s[0].offset===m);_.reverse().forEach(open)}else"start"===s[0].event?_.push(s[0].node):_.pop(),render(s.splice(0,1)[0])}return v+escapeHTML(u.substr(m))}(m,nodeStream(v),u)}};function tag(i){return i.nodeName.toLowerCase()}function nodeStream(i){const s=[];return function _nodeStream(i,u){for(let m=i.firstChild;m;m=m.nextSibling)3===m.nodeType?u+=m.nodeValue.length:1===m.nodeType&&(s.push({event:"start",offset:u,node:m}),u=_nodeStream(m,u),tag(m).match(/br|hr|img|input/)||s.push({event:"stop",offset:u,node:m}));return u}(i,0),s}const Ie={},error=i=>{console.error(i)},warn=(i,...s)=>{console.log(`WARN: ${i}`,...s)},deprecated=(i,s)=>{Ie[`${i}/${s}`]||(console.log(`Deprecated as of ${i}. ${s}`),Ie[`${i}/${s}`]=!0)},Te=escapeHTML,Re=inherit,qe=Symbol("nomatch");var ze=function(i){const u=Object.create(null),m=Object.create(null),v=[];let _=!0;const j=/(^(<[^>]+>|\t|)+|\n)/gm,M="Could not find the language '{}', did you forget to load/include a language module?",$={disableAutodetect:!0,name:"Plain text",contains:[]};let W={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(i){return W.noHighlightRe.test(i)}function highlight(i,s,u,m){let v="",_="";"object"==typeof s?(v=i,u=s.ignoreIllegals,_=s.language,m=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_=i,v=s);const j={code:v,language:_};fire("before:highlight",j);const M=j.result?j.result:_highlight(j.language,j.code,u,m);return M.code=j.code,fire("after:highlight",M),M}function _highlight(i,s,m,j){function keywordData(i,s){const u=X.case_insensitive?s[0].toLowerCase():s[0];return Object.prototype.hasOwnProperty.call(i.keywords,u)&&i.keywords[u]}function processBuffer(){null!=ee.subLanguage?function processSubLanguage(){if(""===le)return;let i=null;if("string"==typeof ee.subLanguage){if(!u[ee.subLanguage])return void ie.addText(le);i=_highlight(ee.subLanguage,le,!0,ae[ee.subLanguage]),ae[ee.subLanguage]=i.top}else i=highlightAuto(le,ee.subLanguage.length?ee.subLanguage:null);ee.relevance>0&&(ce+=i.relevance),ie.addSublanguage(i.emitter,i.language)}():function processKeywords(){if(!ee.keywords)return void ie.addText(le);let i=0;ee.keywordPatternRe.lastIndex=0;let s=ee.keywordPatternRe.exec(le),u="";for(;s;){u+=le.substring(i,s.index);const m=keywordData(ee,s);if(m){const[i,v]=m;if(ie.addText(u),u="",ce+=v,i.startsWith("_"))u+=s[0];else{const u=X.classNameAliases[i]||i;ie.addKeyword(s[0],u)}}else u+=s[0];i=ee.keywordPatternRe.lastIndex,s=ee.keywordPatternRe.exec(le)}u+=le.substr(i),ie.addText(u)}(),le=""}function startNewMode(i){return i.className&&ie.openNode(X.classNameAliases[i.className]||i.className),ee=Object.create(i,{parent:{value:ee}}),ee}function endOfMode(i,s,u){let m=function startsWith(i,s){const u=i&&i.exec(s);return u&&0===u.index}(i.endRe,u);if(m){if(i["on:end"]){const u=new Response(i);i["on:end"](s,u),u.isMatchIgnored&&(m=!1)}if(m){for(;i.endsParent&&i.parent;)i=i.parent;return i}}if(i.endsWithParent)return endOfMode(i.parent,s,u)}function doIgnore(i){return 0===ee.matcher.regexIndex?(le+=i[0],1):(fe=!0,0)}function doBeginMatch(i){const s=i[0],u=i.rule,m=new Response(u),v=[u.__beforeBegin,u["on:begin"]];for(const u of v)if(u&&(u(i,m),m.isMatchIgnored))return doIgnore(s);return u&&u.endSameAsBegin&&(u.endRe=function escape(i){return new RegExp(i.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(s)),u.skip?le+=s:(u.excludeBegin&&(le+=s),processBuffer(),u.returnBegin||u.excludeBegin||(le=s)),startNewMode(u),u.returnBegin?0:s.length}function doEndMatch(i){const u=i[0],m=s.substr(i.index),v=endOfMode(ee,i,m);if(!v)return qe;const _=ee;_.skip?le+=u:(_.returnEnd||_.excludeEnd||(le+=u),processBuffer(),_.excludeEnd&&(le=u));do{ee.className&&ie.closeNode(),ee.skip||ee.subLanguage||(ce+=ee.relevance),ee=ee.parent}while(ee!==v.parent);return v.starts&&(v.endSameAsBegin&&(v.starts.endRe=v.endRe),startNewMode(v.starts)),_.returnEnd?0:u.length}let $={};function processLexeme(u,v){const j=v&&v[0];if(le+=u,null==j)return processBuffer(),0;if("begin"===$.type&&"end"===v.type&&$.index===v.index&&""===j){if(le+=s.slice(v.index,v.index+1),!_){const s=new Error("0 width match regex");throw s.languageName=i,s.badRule=$.rule,s}return 1}if($=v,"begin"===v.type)return doBeginMatch(v);if("illegal"===v.type&&!m){const i=new Error('Illegal lexeme "'+j+'" for mode "'+(ee.className||"")+'"');throw i.mode=ee,i}if("end"===v.type){const i=doEndMatch(v);if(i!==qe)return i}if("illegal"===v.type&&""===j)return 1;if(de>1e5&&de>3*v.index){throw new Error("potential infinite loop, way more iterations than matches")}return le+=j,j.length}const X=getLanguage(i);if(!X)throw error(M.replace("{}",i)),new Error('Unknown language: "'+i+'"');const Y=compileLanguage(X,{plugins:v});let Z="",ee=j||Y;const ae={},ie=new W.__emitter(W);!function processContinuations(){const i=[];for(let s=ee;s!==X;s=s.parent)s.className&&i.unshift(s.className);i.forEach((i=>ie.openNode(i)))}();let le="",ce=0,pe=0,de=0,fe=!1;try{for(ee.matcher.considerAll();;){de++,fe?fe=!1:ee.matcher.considerAll(),ee.matcher.lastIndex=pe;const i=ee.matcher.exec(s);if(!i)break;const u=processLexeme(s.substring(pe,i.index),i);pe=i.index+u}return processLexeme(s.substr(pe)),ie.closeAllNodes(),ie.finalize(),Z=ie.toHTML(),{relevance:Math.floor(ce),value:Z,language:i,illegal:!1,emitter:ie,top:ee}}catch(u){if(u.message&&u.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:u.message,context:s.slice(pe-100,pe+100),mode:u.mode},sofar:Z,relevance:0,value:Te(s),emitter:ie};if(_)return{illegal:!1,relevance:0,value:Te(s),emitter:ie,language:i,top:ee,errorRaised:u};throw u}}function highlightAuto(i,s){s=s||W.languages||Object.keys(u);const m=function justTextHighlightResult(i){const s={relevance:0,emitter:new W.__emitter(W),value:Te(i),illegal:!1,top:$};return s.emitter.addText(i),s}(i),v=s.filter(getLanguage).filter(autoDetection).map((s=>_highlight(s,i,!1)));v.unshift(m);const _=v.sort(((i,s)=>{if(i.relevance!==s.relevance)return s.relevance-i.relevance;if(i.language&&s.language){if(getLanguage(i.language).supersetOf===s.language)return 1;if(getLanguage(s.language).supersetOf===i.language)return-1}return 0})),[j,M]=_,X=j;return X.second_best=M,X}const X={"before:highlightElement":({el:i})=>{W.useBR&&(i.innerHTML=i.innerHTML.replace(/\n/g,"").replace(//g,"\n"))},"after:highlightElement":({result:i})=>{W.useBR&&(i.value=i.value.replace(/\n/g,"
"))}},Y=/^(<[^>]+>|\t)+/gm,Z={"after:highlightElement":({result:i})=>{W.tabReplace&&(i.value=i.value.replace(Y,(i=>i.replace(/\t/g,W.tabReplace))))}};function highlightElement(i){let s=null;const u=function blockLanguage(i){let s=i.className+" ";s+=i.parentNode?i.parentNode.className:"";const u=W.languageDetectRe.exec(s);if(u){const s=getLanguage(u[1]);return s||(warn(M.replace("{}",u[1])),warn("Falling back to no-highlight mode for this block.",i)),s?u[1]:"no-highlight"}return s.split(/\s+/).find((i=>shouldNotHighlight(i)||getLanguage(i)))}(i);if(shouldNotHighlight(u))return;fire("before:highlightElement",{el:i,language:u}),s=i;const v=s.textContent,_=u?highlight(v,{language:u,ignoreIllegals:!0}):highlightAuto(v);fire("after:highlightElement",{el:i,result:_,text:v}),i.innerHTML=_.value,function updateClassName(i,s,u){const v=s?m[s]:u;i.classList.add("hljs"),v&&i.classList.add(v)}(i,u,_.language),i.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(i.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let ee=!1;function highlightAll(){if("loading"===document.readyState)return void(ee=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(i){return i=(i||"").toLowerCase(),u[i]||u[m[i]]}function registerAliases(i,{languageName:s}){"string"==typeof i&&(i=[i]),i.forEach((i=>{m[i.toLowerCase()]=s}))}function autoDetection(i){const s=getLanguage(i);return s&&!s.disableAutodetect}function fire(i,s){const u=i;v.forEach((function(i){i[u]&&i[u](s)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){ee&&highlightAll()}),!1),Object.assign(i,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(i){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(i){return W.tabReplace||W.useBR?i.replace(j,(i=>"\n"===i?W.useBR?"
":i:W.tabReplace?i.replace(/\t/g,W.tabReplace):i)):i}(i)},highlightElement,highlightBlock:function deprecateHighlightBlock(i){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(i)},configure:function configure(i){i.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),W=Re(W,i)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),ee=!0},registerLanguage:function registerLanguage(s,m){let v=null;try{v=m(i)}catch(i){if(error("Language definition for '{}' could not be registered.".replace("{}",s)),!_)throw i;error(i),v=$}v.name||(v.name=s),u[s]=v,v.rawDefinition=m.bind(null,i),v.aliases&®isterAliases(v.aliases,{languageName:s})},unregisterLanguage:function unregisterLanguage(i){delete u[i];for(const s of Object.keys(m))m[s]===i&&delete m[s]},listLanguages:function listLanguages(){return Object.keys(u)},getLanguage,registerAliases,requireLanguage:function requireLanguage(i){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const s=getLanguage(i);if(s)return s;throw new Error("The '{}' language is required, but not loaded.".replace("{}",i))},autoDetection,inherit:Re,addPlugin:function addPlugin(i){!function upgradePluginAPI(i){i["before:highlightBlock"]&&!i["before:highlightElement"]&&(i["before:highlightElement"]=s=>{i["before:highlightBlock"](Object.assign({block:s.el},s))}),i["after:highlightBlock"]&&!i["after:highlightElement"]&&(i["after:highlightElement"]=s=>{i["after:highlightBlock"](Object.assign({block:s.el},s))})}(i),v.push(i)},vuePlugin:BuildVuePlugin(i).VuePlugin}),i.debugMode=function(){_=!1},i.safeMode=function(){_=!0},i.versionString="10.7.3";for(const i in we)"object"==typeof we[i]&&s(we[i]);return Object.assign(i,we),i.addPlugin(X),i.addPlugin(Pe),i.addPlugin(Z),i}({});i.exports=ze},61519:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function bash(i){const s={},u={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},u]});const m={className:"subst",begin:/\$\(/,end:/\)/,contains:[i.BACKSLASH_ESCAPE]},v={begin:/<<-?\s*(?=\w+)/,starts:{contains:[i.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},_={className:"string",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE,s,m]};m.contains.push(_);const j={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},i.NUMBER_MODE,s]},M=i.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),$={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[i.inherit(i.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[M,i.SHEBANG(),$,j,i.HASH_COMMENT_MODE,v,_,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}},30786:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function http(i){const s="HTTP/(2|1\\.[01])",u={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},m=[u,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+s+" \\d{3})",end:/$/,contains:[{className:"meta",begin:s},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},{begin:"(?=^[A-Z]+ (.*?) "+s+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:s},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},i.inherit(u,{relevance:0})]}}},96344:i=>{const s="[A-Za-z$_][0-9A-Za-z$_]*",u=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],m=["true","false","null","undefined","NaN","Infinity"],v=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function javascript(i){const _=s,j="<>",M="",$={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(i,s)=>{const u=i[0].length+i.index,m=i.input[u];"<"!==m?">"===m&&(((i,{after:s})=>{const u="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,contains:ye}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:j,end:M},{begin:$.begin,"on:begin":$.isTrulyOpeningTag,end:$.end}],subLanguage:"xml",contains:[{begin:$.begin,end:$.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:W,contains:["self",i.inherit(i.TITLE_MODE,{begin:_}),be],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[be,i.inherit(i.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:_}),"self",be]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[i.inherit(i.TITLE_MODE,{begin:_}),{begin:/\(\)/},be]},{begin:/\$[(.]/}]}}},82026:i=>{i.exports=function json(i){const s={literal:"true false null"},u=[i.C_LINE_COMMENT_MODE,i.C_BLOCK_COMMENT_MODE],m=[i.QUOTE_STRING_MODE,i.C_NUMBER_MODE],v={end:",",endsWithParent:!0,excludeEnd:!0,contains:m,keywords:s},_={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE],illegal:"\\n"},i.inherit(v,{begin:/:/})].concat(u),illegal:"\\S"},j={begin:"\\[",end:"\\]",contains:[i.inherit(v)],illegal:"\\S"};return m.push(_,j),u.forEach((function(i){m.push(i)})),{name:"JSON",contains:m,keywords:s,illegal:"\\S"}}},66336:i=>{i.exports=function powershell(i){const s={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},u={begin:"`[\\s\\S]",relevance:0},m={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},v={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[u,m,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},_={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},j=i.inherit(i.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),M={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},$={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[i.TITLE_MODE]},W={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[m]}]},X={begin:/using\s/,end:/$/,returnBegin:!0,contains:[v,_,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},Y={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},Z={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(s.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},i.inherit(i.TITLE_MODE,{endsParent:!0})]},ee=[Z,j,u,i.NUMBER_MODE,v,_,M,m,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],ae={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",ee,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return Z.contains.unshift(ae),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:s,contains:ee.concat($,W,X,Y,ae)}}},42157:i=>{function source(i){return i?"string"==typeof i?i:i.source:null}function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>source(i))).join("")}function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}i.exports=function xml(i){const s=concat(/[A-Z_]/,function optional(i){return concat("(",i,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),u={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},m={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},v=i.inherit(m,{begin:/\(/,end:/\)/}),_=i.inherit(i.APOS_STRING_MODE,{className:"meta-string"}),j=i.inherit(i.QUOTE_STRING_MODE,{className:"meta-string"}),M={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[m,j,_,v,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[m,v,j,_]}]}]},i.COMMENT(//,{relevance:10}),{begin://,relevance:10},u,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[M],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[M],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:s,relevance:0,starts:M}]},{className:"tag",begin:concat(/<\//,lookahead(concat(s,/>/))),contains:[{className:"name",begin:s,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},54587:i=>{i.exports=function yaml(i){var s="true false yes no null",u="[\\w#;/?:@&=+$,.~*'()[\\]]+",m={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[i.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},v=i.inherit(m,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},j={end:",",endsWithParent:!0,excludeEnd:!0,keywords:s,relevance:0},M={begin:/\{/,end:/\}/,contains:[j],illegal:"\\n",relevance:0},$={begin:"\\[",end:"\\]",contains:[j],illegal:"\\n",relevance:0},W=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+u},{className:"type",begin:"!<"+u+">"},{className:"type",begin:"!"+u},{className:"type",begin:"!!"+u},{className:"meta",begin:"&"+i.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+i.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},i.HASH_COMMENT_MODE,{beginKeywords:s,keywords:{literal:s}},_,{className:"number",begin:i.C_NUMBER_RE+"\\b",relevance:0},M,$,m],X=[...W];return X.pop(),X.push(v),j.contains=X,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:W}}},8679:(i,s,u)=>{"use strict";var m=u(59864),v={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},_={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},j={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},M={};function getStatics(i){return m.isMemo(i)?j:M[i.$$typeof]||v}M[m.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},M[m.Memo]=j;var $=Object.defineProperty,W=Object.getOwnPropertyNames,X=Object.getOwnPropertySymbols,Y=Object.getOwnPropertyDescriptor,Z=Object.getPrototypeOf,ee=Object.prototype;i.exports=function hoistNonReactStatics(i,s,u){if("string"!=typeof s){if(ee){var m=Z(s);m&&m!==ee&&hoistNonReactStatics(i,m,u)}var v=W(s);X&&(v=v.concat(X(s)));for(var j=getStatics(i),M=getStatics(s),ae=0;ae{s.read=function(i,s,u,m,v){var _,j,M=8*v-m-1,$=(1<>1,X=-7,Y=u?v-1:0,Z=u?-1:1,ee=i[s+Y];for(Y+=Z,_=ee&(1<<-X)-1,ee>>=-X,X+=M;X>0;_=256*_+i[s+Y],Y+=Z,X-=8);for(j=_&(1<<-X)-1,_>>=-X,X+=m;X>0;j=256*j+i[s+Y],Y+=Z,X-=8);if(0===_)_=1-W;else{if(_===$)return j?NaN:1/0*(ee?-1:1);j+=Math.pow(2,m),_-=W}return(ee?-1:1)*j*Math.pow(2,_-m)},s.write=function(i,s,u,m,v,_){var j,M,$,W=8*_-v-1,X=(1<>1,Z=23===v?Math.pow(2,-24)-Math.pow(2,-77):0,ee=m?0:_-1,ae=m?1:-1,ie=s<0||0===s&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(M=isNaN(s)?1:0,j=X):(j=Math.floor(Math.log(s)/Math.LN2),s*($=Math.pow(2,-j))<1&&(j--,$*=2),(s+=j+Y>=1?Z/$:Z*Math.pow(2,1-Y))*$>=2&&(j++,$/=2),j+Y>=X?(M=0,j=X):j+Y>=1?(M=(s*$-1)*Math.pow(2,v),j+=Y):(M=s*Math.pow(2,Y-1)*Math.pow(2,v),j=0));v>=8;i[u+ee]=255&M,ee+=ae,M/=256,v-=8);for(j=j<0;i[u+ee]=255&j,ee+=ae,j/=256,W-=8);i[u+ee-ae]|=128*ie}},43393:function(i){i.exports=function(){"use strict";var i=Array.prototype.slice;function createClass(i,s){s&&(i.prototype=Object.create(s.prototype)),i.prototype.constructor=i}function Iterable(i){return isIterable(i)?i:Seq(i)}function KeyedIterable(i){return isKeyed(i)?i:KeyedSeq(i)}function IndexedIterable(i){return isIndexed(i)?i:IndexedSeq(i)}function SetIterable(i){return isIterable(i)&&!isAssociative(i)?i:SetSeq(i)}function isIterable(i){return!(!i||!i[s])}function isKeyed(i){return!(!i||!i[u])}function isIndexed(i){return!(!i||!i[m])}function isAssociative(i){return isKeyed(i)||isIndexed(i)}function isOrdered(i){return!(!i||!i[v])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var s="@@__IMMUTABLE_ITERABLE__@@",u="@@__IMMUTABLE_KEYED__@@",m="@@__IMMUTABLE_INDEXED__@@",v="@@__IMMUTABLE_ORDERED__@@",_="delete",j=5,M=1<>>0;if(""+u!==s||4294967295===u)return NaN;s=u}return s<0?ensureSize(i)+s:s}function returnTrue(){return!0}function wholeSlice(i,s,u){return(0===i||void 0!==u&&i<=-u)&&(void 0===s||void 0!==u&&s>=u)}function resolveBegin(i,s){return resolveIndex(i,s,0)}function resolveEnd(i,s){return resolveIndex(i,s,s)}function resolveIndex(i,s,u){return void 0===i?u:i<0?Math.max(0,s+i):void 0===s?i:Math.min(s,i)}var Z=0,ee=1,ae=2,ie="function"==typeof Symbol&&Symbol.iterator,le="@@iterator",ce=ie||le;function Iterator(i){this.next=i}function iteratorValue(i,s,u,m){var v=0===i?s:1===i?u:[s,u];return m?m.value=v:m={value:v,done:!1},m}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(i){return!!getIteratorFn(i)}function isIterator(i){return i&&"function"==typeof i.next}function getIterator(i){var s=getIteratorFn(i);return s&&s.call(i)}function getIteratorFn(i){var s=i&&(ie&&i[ie]||i[le]);if("function"==typeof s)return s}function isArrayLike(i){return i&&"number"==typeof i.length}function Seq(i){return null==i?emptySequence():isIterable(i)?i.toSeq():seqFromValue(i)}function KeyedSeq(i){return null==i?emptySequence().toKeyedSeq():isIterable(i)?isKeyed(i)?i.toSeq():i.fromEntrySeq():keyedSeqFromValue(i)}function IndexedSeq(i){return null==i?emptySequence():isIterable(i)?isKeyed(i)?i.entrySeq():i.toIndexedSeq():indexedSeqFromValue(i)}function SetSeq(i){return(null==i?emptySequence():isIterable(i)?isKeyed(i)?i.entrySeq():i:indexedSeqFromValue(i)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=Z,Iterator.VALUES=ee,Iterator.ENTRIES=ae,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[ce]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(i,s){return seqIterate(this,i,s,!0)},Seq.prototype.__iterator=function(i,s){return seqIterator(this,i,s,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(i,s){return seqIterate(this,i,s,!1)},IndexedSeq.prototype.__iterator=function(i,s){return seqIterator(this,i,s,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var pe,de,fe,ye="@@__IMMUTABLE_SEQ__@@";function ArraySeq(i){this._array=i,this.size=i.length}function ObjectSeq(i){var s=Object.keys(i);this._object=i,this._keys=s,this.size=s.length}function IterableSeq(i){this._iterable=i,this.size=i.length||i.size}function IteratorSeq(i){this._iterator=i,this._iteratorCache=[]}function isSeq(i){return!(!i||!i[ye])}function emptySequence(){return pe||(pe=new ArraySeq([]))}function keyedSeqFromValue(i){var s=Array.isArray(i)?new ArraySeq(i).fromEntrySeq():isIterator(i)?new IteratorSeq(i).fromEntrySeq():hasIterator(i)?new IterableSeq(i).fromEntrySeq():"object"==typeof i?new ObjectSeq(i):void 0;if(!s)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+i);return s}function indexedSeqFromValue(i){var s=maybeIndexedSeqFromValue(i);if(!s)throw new TypeError("Expected Array or iterable object of values: "+i);return s}function seqFromValue(i){var s=maybeIndexedSeqFromValue(i)||"object"==typeof i&&new ObjectSeq(i);if(!s)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+i);return s}function maybeIndexedSeqFromValue(i){return isArrayLike(i)?new ArraySeq(i):isIterator(i)?new IteratorSeq(i):hasIterator(i)?new IterableSeq(i):void 0}function seqIterate(i,s,u,m){var v=i._cache;if(v){for(var _=v.length-1,j=0;j<=_;j++){var M=v[u?_-j:j];if(!1===s(M[1],m?M[0]:j,i))return j+1}return j}return i.__iterateUncached(s,u)}function seqIterator(i,s,u,m){var v=i._cache;if(v){var _=v.length-1,j=0;return new Iterator((function(){var i=v[u?_-j:j];return j++>_?iteratorDone():iteratorValue(s,m?i[0]:j-1,i[1])}))}return i.__iteratorUncached(s,u)}function fromJS(i,s){return s?fromJSWith(s,i,"",{"":i}):fromJSDefault(i)}function fromJSWith(i,s,u,m){return Array.isArray(s)?i.call(m,u,IndexedSeq(s).map((function(u,m){return fromJSWith(i,u,m,s)}))):isPlainObj(s)?i.call(m,u,KeyedSeq(s).map((function(u,m){return fromJSWith(i,u,m,s)}))):s}function fromJSDefault(i){return Array.isArray(i)?IndexedSeq(i).map(fromJSDefault).toList():isPlainObj(i)?KeyedSeq(i).map(fromJSDefault).toMap():i}function isPlainObj(i){return i&&(i.constructor===Object||void 0===i.constructor)}function is(i,s){if(i===s||i!=i&&s!=s)return!0;if(!i||!s)return!1;if("function"==typeof i.valueOf&&"function"==typeof s.valueOf){if((i=i.valueOf())===(s=s.valueOf())||i!=i&&s!=s)return!0;if(!i||!s)return!1}return!("function"!=typeof i.equals||"function"!=typeof s.equals||!i.equals(s))}function deepEqual(i,s){if(i===s)return!0;if(!isIterable(s)||void 0!==i.size&&void 0!==s.size&&i.size!==s.size||void 0!==i.__hash&&void 0!==s.__hash&&i.__hash!==s.__hash||isKeyed(i)!==isKeyed(s)||isIndexed(i)!==isIndexed(s)||isOrdered(i)!==isOrdered(s))return!1;if(0===i.size&&0===s.size)return!0;var u=!isAssociative(i);if(isOrdered(i)){var m=i.entries();return s.every((function(i,s){var v=m.next().value;return v&&is(v[1],i)&&(u||is(v[0],s))}))&&m.next().done}var v=!1;if(void 0===i.size)if(void 0===s.size)"function"==typeof i.cacheResult&&i.cacheResult();else{v=!0;var _=i;i=s,s=_}var j=!0,M=s.__iterate((function(s,m){if(u?!i.has(s):v?!is(s,i.get(m,W)):!is(i.get(m,W),s))return j=!1,!1}));return j&&i.size===M}function Repeat(i,s){if(!(this instanceof Repeat))return new Repeat(i,s);if(this._value=i,this.size=void 0===s?1/0:Math.max(0,s),0===this.size){if(de)return de;de=this}}function invariant(i,s){if(!i)throw new Error(s)}function Range(i,s,u){if(!(this instanceof Range))return new Range(i,s,u);if(invariant(0!==u,"Cannot step a Range by 0"),i=i||0,void 0===s&&(s=1/0),u=void 0===u?1:Math.abs(u),sm?iteratorDone():iteratorValue(i,v,u[s?m-v++:v++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(i,s){return void 0===s||this.has(i)?this._object[i]:s},ObjectSeq.prototype.has=function(i){return this._object.hasOwnProperty(i)},ObjectSeq.prototype.__iterate=function(i,s){for(var u=this._object,m=this._keys,v=m.length-1,_=0;_<=v;_++){var j=m[s?v-_:_];if(!1===i(u[j],j,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(i,s){var u=this._object,m=this._keys,v=m.length-1,_=0;return new Iterator((function(){var j=m[s?v-_:_];return _++>v?iteratorDone():iteratorValue(i,j,u[j])}))},ObjectSeq.prototype[v]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(i,s){if(s)return this.cacheResult().__iterate(i,s);var u=getIterator(this._iterable),m=0;if(isIterator(u))for(var v;!(v=u.next()).done&&!1!==i(v.value,m++,this););return m},IterableSeq.prototype.__iteratorUncached=function(i,s){if(s)return this.cacheResult().__iterator(i,s);var u=getIterator(this._iterable);if(!isIterator(u))return new Iterator(iteratorDone);var m=0;return new Iterator((function(){var s=u.next();return s.done?s:iteratorValue(i,m++,s.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(i,s){if(s)return this.cacheResult().__iterate(i,s);for(var u,m=this._iterator,v=this._iteratorCache,_=0;_=m.length){var s=u.next();if(s.done)return s;m[v]=s.value}return iteratorValue(i,v,m[v++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(i,s){return this.has(i)?this._value:s},Repeat.prototype.includes=function(i){return is(this._value,i)},Repeat.prototype.slice=function(i,s){var u=this.size;return wholeSlice(i,s,u)?this:new Repeat(this._value,resolveEnd(s,u)-resolveBegin(i,u))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(i){return is(this._value,i)?0:-1},Repeat.prototype.lastIndexOf=function(i){return is(this._value,i)?this.size:-1},Repeat.prototype.__iterate=function(i,s){for(var u=0;u=0&&s=0&&uu?iteratorDone():iteratorValue(i,_++,j)}))},Range.prototype.equals=function(i){return i instanceof Range?this._start===i._start&&this._end===i._end&&this._step===i._step:deepEqual(this,i)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var be="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(i,s){var u=65535&(i|=0),m=65535&(s|=0);return u*m+((i>>>16)*m+u*(s>>>16)<<16>>>0)|0};function smi(i){return i>>>1&1073741824|3221225471&i}function hash(i){if(!1===i||null==i)return 0;if("function"==typeof i.valueOf&&(!1===(i=i.valueOf())||null==i))return 0;if(!0===i)return 1;var s=typeof i;if("number"===s){if(i!=i||i===1/0)return 0;var u=0|i;for(u!==i&&(u^=4294967295*i);i>4294967295;)u^=i/=4294967295;return smi(u)}if("string"===s)return i.length>Te?cachedHashString(i):hashString(i);if("function"==typeof i.hashCode)return i.hashCode();if("object"===s)return hashJSObj(i);if("function"==typeof i.toString)return hashString(i.toString());throw new Error("Value type "+s+" cannot be hashed.")}function cachedHashString(i){var s=ze[i];return void 0===s&&(s=hashString(i),qe===Re&&(qe=0,ze={}),qe++,ze[i]=s),s}function hashString(i){for(var s=0,u=0;u0)switch(i.nodeType){case 1:return i.uniqueID;case 9:return i.documentElement&&i.documentElement.uniqueID}}var Se,xe="function"==typeof WeakMap;xe&&(Se=new WeakMap);var Pe=0,Ie="__immutablehash__";"function"==typeof Symbol&&(Ie=Symbol(Ie));var Te=16,Re=255,qe=0,ze={};function assertNotInfinite(i){invariant(i!==1/0,"Cannot perform this action with an infinite size.")}function Map(i){return null==i?emptyMap():isMap(i)&&!isOrdered(i)?i:emptyMap().withMutations((function(s){var u=KeyedIterable(i);assertNotInfinite(u.size),u.forEach((function(i,u){return s.set(u,i)}))}))}function isMap(i){return!(!i||!i[We])}createClass(Map,KeyedCollection),Map.of=function(){var s=i.call(arguments,0);return emptyMap().withMutations((function(i){for(var u=0;u=s.length)throw new Error("Missing value for key: "+s[u]);i.set(s[u],s[u+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(i,s){return this._root?this._root.get(0,void 0,i,s):s},Map.prototype.set=function(i,s){return updateMap(this,i,s)},Map.prototype.setIn=function(i,s){return this.updateIn(i,W,(function(){return s}))},Map.prototype.remove=function(i){return updateMap(this,i,W)},Map.prototype.deleteIn=function(i){return this.updateIn(i,(function(){return W}))},Map.prototype.update=function(i,s,u){return 1===arguments.length?i(this):this.updateIn([i],s,u)},Map.prototype.updateIn=function(i,s,u){u||(u=s,s=void 0);var m=updateInDeepMap(this,forceIterator(i),s,u);return m===W?void 0:m},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(s){return mergeIntoMapWith(this,s,i.call(arguments,1))},Map.prototype.mergeIn=function(s){var u=i.call(arguments,1);return this.updateIn(s,emptyMap(),(function(i){return"function"==typeof i.merge?i.merge.apply(i,u):u[u.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(s){var u=i.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(s),u)},Map.prototype.mergeDeepIn=function(s){var u=i.call(arguments,1);return this.updateIn(s,emptyMap(),(function(i){return"function"==typeof i.mergeDeep?i.mergeDeep.apply(i,u):u[u.length-1]}))},Map.prototype.sort=function(i){return OrderedMap(sortFactory(this,i))},Map.prototype.sortBy=function(i,s){return OrderedMap(sortFactory(this,s,i))},Map.prototype.withMutations=function(i){var s=this.asMutable();return i(s),s.wasAltered()?s.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(i,s){return new MapIterator(this,i,s)},Map.prototype.__iterate=function(i,s){var u=this,m=0;return this._root&&this._root.iterate((function(s){return m++,i(s[1],s[0],u)}),s),m},Map.prototype.__ensureOwner=function(i){return i===this.__ownerID?this:i?makeMap(this.size,this._root,i,this.__hash):(this.__ownerID=i,this.__altered=!1,this)},Map.isMap=isMap;var Ve,We="@@__IMMUTABLE_MAP__@@",He=Map.prototype;function ArrayMapNode(i,s){this.ownerID=i,this.entries=s}function BitmapIndexedNode(i,s,u){this.ownerID=i,this.bitmap=s,this.nodes=u}function HashArrayMapNode(i,s,u){this.ownerID=i,this.count=s,this.nodes=u}function HashCollisionNode(i,s,u){this.ownerID=i,this.keyHash=s,this.entries=u}function ValueNode(i,s,u){this.ownerID=i,this.keyHash=s,this.entry=u}function MapIterator(i,s,u){this._type=s,this._reverse=u,this._stack=i._root&&mapIteratorFrame(i._root)}function mapIteratorValue(i,s){return iteratorValue(i,s[0],s[1])}function mapIteratorFrame(i,s){return{node:i,index:0,__prev:s}}function makeMap(i,s,u,m){var v=Object.create(He);return v.size=i,v._root=s,v.__ownerID=u,v.__hash=m,v.__altered=!1,v}function emptyMap(){return Ve||(Ve=makeMap(0))}function updateMap(i,s,u){var m,v;if(i._root){var _=MakeRef(X),j=MakeRef(Y);if(m=updateNode(i._root,i.__ownerID,0,void 0,s,u,_,j),!j.value)return i;v=i.size+(_.value?u===W?-1:1:0)}else{if(u===W)return i;v=1,m=new ArrayMapNode(i.__ownerID,[[s,u]])}return i.__ownerID?(i.size=v,i._root=m,i.__hash=void 0,i.__altered=!0,i):m?makeMap(v,m):emptyMap()}function updateNode(i,s,u,m,v,_,j,M){return i?i.update(s,u,m,v,_,j,M):_===W?i:(SetRef(M),SetRef(j),new ValueNode(s,m,[v,_]))}function isLeafNode(i){return i.constructor===ValueNode||i.constructor===HashCollisionNode}function mergeIntoNode(i,s,u,m,v){if(i.keyHash===m)return new HashCollisionNode(s,m,[i.entry,v]);var _,M=(0===u?i.keyHash:i.keyHash>>>u)&$,W=(0===u?m:m>>>u)&$;return new BitmapIndexedNode(s,1<>>=1)j[$]=1&u?s[_++]:void 0;return j[m]=v,new HashArrayMapNode(i,_+1,j)}function mergeIntoMapWith(i,s,u){for(var m=[],v=0;v>1&1431655765))+(i>>2&858993459))+(i>>4)&252645135,i+=i>>8,127&(i+=i>>16)}function setIn(i,s,u,m){var v=m?i:arrCopy(i);return v[s]=u,v}function spliceIn(i,s,u,m){var v=i.length+1;if(m&&s+1===v)return i[s]=u,i;for(var _=new Array(v),j=0,M=0;M=Xe)return createNodes(i,$,m,v);var ee=i&&i===this.ownerID,ae=ee?$:arrCopy($);return Z?M?X===Y-1?ae.pop():ae[X]=ae.pop():ae[X]=[m,v]:ae.push([m,v]),ee?(this.entries=ae,this):new ArrayMapNode(i,ae)}},BitmapIndexedNode.prototype.get=function(i,s,u,m){void 0===s&&(s=hash(u));var v=1<<((0===i?s:s>>>i)&$),_=this.bitmap;return 0==(_&v)?m:this.nodes[popCount(_&v-1)].get(i+j,s,u,m)},BitmapIndexedNode.prototype.update=function(i,s,u,m,v,_,M){void 0===u&&(u=hash(m));var X=(0===s?u:u>>>s)&$,Y=1<=Ye)return expandNodes(i,ie,Z,X,ce);if(ee&&!ce&&2===ie.length&&isLeafNode(ie[1^ae]))return ie[1^ae];if(ee&&ce&&1===ie.length&&isLeafNode(ce))return ce;var pe=i&&i===this.ownerID,de=ee?ce?Z:Z^Y:Z|Y,fe=ee?ce?setIn(ie,ae,ce,pe):spliceOut(ie,ae,pe):spliceIn(ie,ae,ce,pe);return pe?(this.bitmap=de,this.nodes=fe,this):new BitmapIndexedNode(i,de,fe)},HashArrayMapNode.prototype.get=function(i,s,u,m){void 0===s&&(s=hash(u));var v=(0===i?s:s>>>i)&$,_=this.nodes[v];return _?_.get(i+j,s,u,m):m},HashArrayMapNode.prototype.update=function(i,s,u,m,v,_,M){void 0===u&&(u=hash(m));var X=(0===s?u:u>>>s)&$,Y=v===W,Z=this.nodes,ee=Z[X];if(Y&&!ee)return this;var ae=updateNode(ee,i,s+j,u,m,v,_,M);if(ae===ee)return this;var ie=this.count;if(ee){if(!ae&&--ie0&&m=0&&i>>s&$;if(m>=this.array.length)return new VNode([],i);var v,_=0===m;if(s>0){var M=this.array[m];if((v=M&&M.removeBefore(i,s-j,u))===M&&_)return this}if(_&&!v)return this;var W=editableVNode(this,i);if(!_)for(var X=0;X>>s&$;if(v>=this.array.length)return this;if(s>0){var _=this.array[v];if((m=_&&_.removeAfter(i,s-j,u))===_&&v===this.array.length-1)return this}var M=editableVNode(this,i);return M.array.splice(v+1),m&&(M.array[v]=m),M};var rt,nt,ot={};function iterateList(i,s){var u=i._origin,m=i._capacity,v=getTailOffset(m),_=i._tail;return iterateNodeOrLeaf(i._root,i._level,0);function iterateNodeOrLeaf(i,s,u){return 0===s?iterateLeaf(i,u):iterateNode(i,s,u)}function iterateLeaf(i,j){var $=j===v?_&&_.array:i&&i.array,W=j>u?0:u-j,X=m-j;return X>M&&(X=M),function(){if(W===X)return ot;var i=s?--X:W++;return $&&$[i]}}function iterateNode(i,v,_){var $,W=i&&i.array,X=_>u?0:u-_>>v,Y=1+(m-_>>v);return Y>M&&(Y=M),function(){for(;;){if($){var i=$();if(i!==ot)return i;$=null}if(X===Y)return ot;var u=s?--Y:X++;$=iterateNodeOrLeaf(W&&W[u],v-j,_+(u<=i.size||s<0)return i.withMutations((function(i){s<0?setListBounds(i,s).set(0,u):setListBounds(i,0,s+1).set(s,u)}));s+=i._origin;var m=i._tail,v=i._root,_=MakeRef(Y);return s>=getTailOffset(i._capacity)?m=updateVNode(m,i.__ownerID,0,s,u,_):v=updateVNode(v,i.__ownerID,i._level,s,u,_),_.value?i.__ownerID?(i._root=v,i._tail=m,i.__hash=void 0,i.__altered=!0,i):makeList(i._origin,i._capacity,i._level,v,m):i}function updateVNode(i,s,u,m,v,_){var M,W=m>>>u&$,X=i&&W0){var Y=i&&i.array[W],Z=updateVNode(Y,s,u-j,m,v,_);return Z===Y?i:((M=editableVNode(i,s)).array[W]=Z,M)}return X&&i.array[W]===v?i:(SetRef(_),M=editableVNode(i,s),void 0===v&&W===M.array.length-1?M.array.pop():M.array[W]=v,M)}function editableVNode(i,s){return s&&i&&s===i.ownerID?i:new VNode(i?i.array.slice():[],s)}function listNodeFor(i,s){if(s>=getTailOffset(i._capacity))return i._tail;if(s<1<0;)u=u.array[s>>>m&$],m-=j;return u}}function setListBounds(i,s,u){void 0!==s&&(s|=0),void 0!==u&&(u|=0);var m=i.__ownerID||new OwnerID,v=i._origin,_=i._capacity,M=v+s,W=void 0===u?_:u<0?_+u:v+u;if(M===v&&W===_)return i;if(M>=W)return i.clear();for(var X=i._level,Y=i._root,Z=0;M+Z<0;)Y=new VNode(Y&&Y.array.length?[void 0,Y]:[],m),Z+=1<<(X+=j);Z&&(M+=Z,v+=Z,W+=Z,_+=Z);for(var ee=getTailOffset(_),ae=getTailOffset(W);ae>=1<ee?new VNode([],m):ie;if(ie&&ae>ee&&M<_&&ie.array.length){for(var ce=Y=editableVNode(Y,m),pe=X;pe>j;pe-=j){var de=ee>>>pe&$;ce=ce.array[de]=editableVNode(ce.array[de],m)}ce.array[ee>>>j&$]=ie}if(W<_&&(le=le&&le.removeAfter(m,0,W)),M>=ae)M-=ae,W-=ae,X=j,Y=null,le=le&&le.removeBefore(m,0,M);else if(M>v||ae>>X&$;if(fe!==ae>>>X&$)break;fe&&(Z+=(1<v&&(Y=Y.removeBefore(m,X,M-Z)),Y&&aev&&(v=M.size),isIterable(j)||(M=M.map((function(i){return fromJS(i)}))),m.push(M)}return v>i.size&&(i=i.setSize(v)),mergeIntoCollectionWith(i,s,m)}function getTailOffset(i){return i>>j<=M&&j.size>=2*_.size?(m=(v=j.filter((function(i,s){return void 0!==i&&$!==s}))).toKeyedSeq().map((function(i){return i[0]})).flip().toMap(),i.__ownerID&&(m.__ownerID=v.__ownerID=i.__ownerID)):(m=_.remove(s),v=$===j.size-1?j.pop():j.set($,void 0))}else if(X){if(u===j.get($)[1])return i;m=_,v=j.set($,[s,u])}else m=_.set(s,j.size),v=j.set(j.size,[s,u]);return i.__ownerID?(i.size=m.size,i._map=m,i._list=v,i.__hash=void 0,i):makeOrderedMap(m,v)}function ToKeyedSequence(i,s){this._iter=i,this._useKeys=s,this.size=i.size}function ToIndexedSequence(i){this._iter=i,this.size=i.size}function ToSetSequence(i){this._iter=i,this.size=i.size}function FromEntriesSequence(i){this._iter=i,this.size=i.size}function flipFactory(i){var s=makeSequence(i);return s._iter=i,s.size=i.size,s.flip=function(){return i},s.reverse=function(){var s=i.reverse.apply(this);return s.flip=function(){return i.reverse()},s},s.has=function(s){return i.includes(s)},s.includes=function(s){return i.has(s)},s.cacheResult=cacheResultThrough,s.__iterateUncached=function(s,u){var m=this;return i.__iterate((function(i,u){return!1!==s(u,i,m)}),u)},s.__iteratorUncached=function(s,u){if(s===ae){var m=i.__iterator(s,u);return new Iterator((function(){var i=m.next();if(!i.done){var s=i.value[0];i.value[0]=i.value[1],i.value[1]=s}return i}))}return i.__iterator(s===ee?Z:ee,u)},s}function mapFactory(i,s,u){var m=makeSequence(i);return m.size=i.size,m.has=function(s){return i.has(s)},m.get=function(m,v){var _=i.get(m,W);return _===W?v:s.call(u,_,m,i)},m.__iterateUncached=function(m,v){var _=this;return i.__iterate((function(i,v,j){return!1!==m(s.call(u,i,v,j),v,_)}),v)},m.__iteratorUncached=function(m,v){var _=i.__iterator(ae,v);return new Iterator((function(){var v=_.next();if(v.done)return v;var j=v.value,M=j[0];return iteratorValue(m,M,s.call(u,j[1],M,i),v)}))},m}function reverseFactory(i,s){var u=makeSequence(i);return u._iter=i,u.size=i.size,u.reverse=function(){return i},i.flip&&(u.flip=function(){var s=flipFactory(i);return s.reverse=function(){return i.flip()},s}),u.get=function(u,m){return i.get(s?u:-1-u,m)},u.has=function(u){return i.has(s?u:-1-u)},u.includes=function(s){return i.includes(s)},u.cacheResult=cacheResultThrough,u.__iterate=function(s,u){var m=this;return i.__iterate((function(i,u){return s(i,u,m)}),!u)},u.__iterator=function(s,u){return i.__iterator(s,!u)},u}function filterFactory(i,s,u,m){var v=makeSequence(i);return m&&(v.has=function(m){var v=i.get(m,W);return v!==W&&!!s.call(u,v,m,i)},v.get=function(m,v){var _=i.get(m,W);return _!==W&&s.call(u,_,m,i)?_:v}),v.__iterateUncached=function(v,_){var j=this,M=0;return i.__iterate((function(i,_,$){if(s.call(u,i,_,$))return M++,v(i,m?_:M-1,j)}),_),M},v.__iteratorUncached=function(v,_){var j=i.__iterator(ae,_),M=0;return new Iterator((function(){for(;;){var _=j.next();if(_.done)return _;var $=_.value,W=$[0],X=$[1];if(s.call(u,X,W,i))return iteratorValue(v,m?W:M++,X,_)}}))},v}function countByFactory(i,s,u){var m=Map().asMutable();return i.__iterate((function(v,_){m.update(s.call(u,v,_,i),0,(function(i){return i+1}))})),m.asImmutable()}function groupByFactory(i,s,u){var m=isKeyed(i),v=(isOrdered(i)?OrderedMap():Map()).asMutable();i.__iterate((function(_,j){v.update(s.call(u,_,j,i),(function(i){return(i=i||[]).push(m?[j,_]:_),i}))}));var _=iterableClass(i);return v.map((function(s){return reify(i,_(s))}))}function sliceFactory(i,s,u,m){var v=i.size;if(void 0!==s&&(s|=0),void 0!==u&&(u===1/0?u=v:u|=0),wholeSlice(s,u,v))return i;var _=resolveBegin(s,v),j=resolveEnd(u,v);if(_!=_||j!=j)return sliceFactory(i.toSeq().cacheResult(),s,u,m);var M,$=j-_;$==$&&(M=$<0?0:$);var W=makeSequence(i);return W.size=0===M?M:i.size&&M||void 0,!m&&isSeq(i)&&M>=0&&(W.get=function(s,u){return(s=wrapIndex(this,s))>=0&&sM)return iteratorDone();var i=v.next();return m||s===ee?i:iteratorValue(s,$-1,s===Z?void 0:i.value[1],i)}))},W}function takeWhileFactory(i,s,u){var m=makeSequence(i);return m.__iterateUncached=function(m,v){var _=this;if(v)return this.cacheResult().__iterate(m,v);var j=0;return i.__iterate((function(i,v,M){return s.call(u,i,v,M)&&++j&&m(i,v,_)})),j},m.__iteratorUncached=function(m,v){var _=this;if(v)return this.cacheResult().__iterator(m,v);var j=i.__iterator(ae,v),M=!0;return new Iterator((function(){if(!M)return iteratorDone();var i=j.next();if(i.done)return i;var v=i.value,$=v[0],W=v[1];return s.call(u,W,$,_)?m===ae?i:iteratorValue(m,$,W,i):(M=!1,iteratorDone())}))},m}function skipWhileFactory(i,s,u,m){var v=makeSequence(i);return v.__iterateUncached=function(v,_){var j=this;if(_)return this.cacheResult().__iterate(v,_);var M=!0,$=0;return i.__iterate((function(i,_,W){if(!M||!(M=s.call(u,i,_,W)))return $++,v(i,m?_:$-1,j)})),$},v.__iteratorUncached=function(v,_){var j=this;if(_)return this.cacheResult().__iterator(v,_);var M=i.__iterator(ae,_),$=!0,W=0;return new Iterator((function(){var i,_,X;do{if((i=M.next()).done)return m||v===ee?i:iteratorValue(v,W++,v===Z?void 0:i.value[1],i);var Y=i.value;_=Y[0],X=Y[1],$&&($=s.call(u,X,_,j))}while($);return v===ae?i:iteratorValue(v,_,X,i)}))},v}function concatFactory(i,s){var u=isKeyed(i),m=[i].concat(s).map((function(i){return isIterable(i)?u&&(i=KeyedIterable(i)):i=u?keyedSeqFromValue(i):indexedSeqFromValue(Array.isArray(i)?i:[i]),i})).filter((function(i){return 0!==i.size}));if(0===m.length)return i;if(1===m.length){var v=m[0];if(v===i||u&&isKeyed(v)||isIndexed(i)&&isIndexed(v))return v}var _=new ArraySeq(m);return u?_=_.toKeyedSeq():isIndexed(i)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=m.reduce((function(i,s){if(void 0!==i){var u=s.size;if(void 0!==u)return i+u}}),0),_}function flattenFactory(i,s,u){var m=makeSequence(i);return m.__iterateUncached=function(m,v){var _=0,j=!1;function flatDeep(i,M){var $=this;i.__iterate((function(i,v){return(!s||M0}function zipWithFactory(i,s,u){var m=makeSequence(i);return m.size=new ArraySeq(u).map((function(i){return i.size})).min(),m.__iterate=function(i,s){for(var u,m=this.__iterator(ee,s),v=0;!(u=m.next()).done&&!1!==i(u.value,v++,this););return v},m.__iteratorUncached=function(i,m){var v=u.map((function(i){return i=Iterable(i),getIterator(m?i.reverse():i)})),_=0,j=!1;return new Iterator((function(){var u;return j||(u=v.map((function(i){return i.next()})),j=u.some((function(i){return i.done}))),j?iteratorDone():iteratorValue(i,_++,s.apply(null,u.map((function(i){return i.value}))))}))},m}function reify(i,s){return isSeq(i)?s:i.constructor(s)}function validateEntry(i){if(i!==Object(i))throw new TypeError("Expected [K, V] tuple: "+i)}function resolveSize(i){return assertNotInfinite(i.size),ensureSize(i)}function iterableClass(i){return isKeyed(i)?KeyedIterable:isIndexed(i)?IndexedIterable:SetIterable}function makeSequence(i){return Object.create((isKeyed(i)?KeyedSeq:isIndexed(i)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(i,s){return i>s?1:i=0;u--)s={value:arguments[u],next:s};return this.__ownerID?(this.size=i,this._head=s,this.__hash=void 0,this.__altered=!0,this):makeStack(i,s)},Stack.prototype.pushAll=function(i){if(0===(i=IndexedIterable(i)).size)return this;assertNotInfinite(i.size);var s=this.size,u=this._head;return i.reverse().forEach((function(i){s++,u={value:i,next:u}})),this.__ownerID?(this.size=s,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(s,u)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(i){return this.pushAll(i)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(i,s){if(wholeSlice(i,s,this.size))return this;var u=resolveBegin(i,this.size);if(resolveEnd(s,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,i,s);for(var m=this.size-u,v=this._head;u--;)v=v.next;return this.__ownerID?(this.size=m,this._head=v,this.__hash=void 0,this.__altered=!0,this):makeStack(m,v)},Stack.prototype.__ensureOwner=function(i){return i===this.__ownerID?this:i?makeStack(this.size,this._head,i,this.__hash):(this.__ownerID=i,this.__altered=!1,this)},Stack.prototype.__iterate=function(i,s){if(s)return this.reverse().__iterate(i);for(var u=0,m=this._head;m&&!1!==i(m.value,u++,this);)m=m.next;return u},Stack.prototype.__iterator=function(i,s){if(s)return this.reverse().__iterator(i);var u=0,m=this._head;return new Iterator((function(){if(m){var s=m.value;return m=m.next,iteratorValue(i,u++,s)}return iteratorDone()}))},Stack.isStack=isStack;var pt,ht="@@__IMMUTABLE_STACK__@@",dt=Stack.prototype;function makeStack(i,s,u,m){var v=Object.create(dt);return v.size=i,v._head=s,v.__ownerID=u,v.__hash=m,v.__altered=!1,v}function emptyStack(){return pt||(pt=makeStack(0))}function mixin(i,s){var keyCopier=function(u){i.prototype[u]=s[u]};return Object.keys(s).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(s).forEach(keyCopier),i}dt[ht]=!0,dt.withMutations=He.withMutations,dt.asMutable=He.asMutable,dt.asImmutable=He.asImmutable,dt.wasAltered=He.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var i=new Array(this.size||0);return this.valueSeq().__iterate((function(s,u){i[u]=s})),i},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(i){return i&&"function"==typeof i.toJS?i.toJS():i})).__toJS()},toJSON:function(){return this.toSeq().map((function(i){return i&&"function"==typeof i.toJSON?i.toJSON():i})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var i={};return this.__iterate((function(s,u){i[u]=s})),i},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(i,s){return 0===this.size?i+s:i+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+s},concat:function(){return reify(this,concatFactory(this,i.call(arguments,0)))},includes:function(i){return this.some((function(s){return is(s,i)}))},entries:function(){return this.__iterator(ae)},every:function(i,s){assertNotInfinite(this.size);var u=!0;return this.__iterate((function(m,v,_){if(!i.call(s,m,v,_))return u=!1,!1})),u},filter:function(i,s){return reify(this,filterFactory(this,i,s,!0))},find:function(i,s,u){var m=this.findEntry(i,s);return m?m[1]:u},forEach:function(i,s){return assertNotInfinite(this.size),this.__iterate(s?i.bind(s):i)},join:function(i){assertNotInfinite(this.size),i=void 0!==i?""+i:",";var s="",u=!0;return this.__iterate((function(m){u?u=!1:s+=i,s+=null!=m?m.toString():""})),s},keys:function(){return this.__iterator(Z)},map:function(i,s){return reify(this,mapFactory(this,i,s))},reduce:function(i,s,u){var m,v;return assertNotInfinite(this.size),arguments.length<2?v=!0:m=s,this.__iterate((function(s,_,j){v?(v=!1,m=s):m=i.call(u,m,s,_,j)})),m},reduceRight:function(i,s,u){var m=this.toKeyedSeq().reverse();return m.reduce.apply(m,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(i,s){return reify(this,sliceFactory(this,i,s,!0))},some:function(i,s){return!this.every(not(i),s)},sort:function(i){return reify(this,sortFactory(this,i))},values:function(){return this.__iterator(ee)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(i,s){return ensureSize(i?this.toSeq().filter(i,s):this)},countBy:function(i,s){return countByFactory(this,i,s)},equals:function(i){return deepEqual(this,i)},entrySeq:function(){var i=this;if(i._cache)return new ArraySeq(i._cache);var s=i.toSeq().map(entryMapper).toIndexedSeq();return s.fromEntrySeq=function(){return i.toSeq()},s},filterNot:function(i,s){return this.filter(not(i),s)},findEntry:function(i,s,u){var m=u;return this.__iterate((function(u,v,_){if(i.call(s,u,v,_))return m=[v,u],!1})),m},findKey:function(i,s){var u=this.findEntry(i,s);return u&&u[0]},findLast:function(i,s,u){return this.toKeyedSeq().reverse().find(i,s,u)},findLastEntry:function(i,s,u){return this.toKeyedSeq().reverse().findEntry(i,s,u)},findLastKey:function(i,s){return this.toKeyedSeq().reverse().findKey(i,s)},first:function(){return this.find(returnTrue)},flatMap:function(i,s){return reify(this,flatMapFactory(this,i,s))},flatten:function(i){return reify(this,flattenFactory(this,i,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(i,s){return this.find((function(s,u){return is(u,i)}),void 0,s)},getIn:function(i,s){for(var u,m=this,v=forceIterator(i);!(u=v.next()).done;){var _=u.value;if((m=m&&m.get?m.get(_,W):W)===W)return s}return m},groupBy:function(i,s){return groupByFactory(this,i,s)},has:function(i){return this.get(i,W)!==W},hasIn:function(i){return this.getIn(i,W)!==W},isSubset:function(i){return i="function"==typeof i.includes?i:Iterable(i),this.every((function(s){return i.includes(s)}))},isSuperset:function(i){return(i="function"==typeof i.isSubset?i:Iterable(i)).isSubset(this)},keyOf:function(i){return this.findKey((function(s){return is(s,i)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(i){return this.toKeyedSeq().reverse().keyOf(i)},max:function(i){return maxFactory(this,i)},maxBy:function(i,s){return maxFactory(this,s,i)},min:function(i){return maxFactory(this,i?neg(i):defaultNegComparator)},minBy:function(i,s){return maxFactory(this,s?neg(s):defaultNegComparator,i)},rest:function(){return this.slice(1)},skip:function(i){return this.slice(Math.max(0,i))},skipLast:function(i){return reify(this,this.toSeq().reverse().skip(i).reverse())},skipWhile:function(i,s){return reify(this,skipWhileFactory(this,i,s,!0))},skipUntil:function(i,s){return this.skipWhile(not(i),s)},sortBy:function(i,s){return reify(this,sortFactory(this,s,i))},take:function(i){return this.slice(0,Math.max(0,i))},takeLast:function(i){return reify(this,this.toSeq().reverse().take(i).reverse())},takeWhile:function(i,s){return reify(this,takeWhileFactory(this,i,s))},takeUntil:function(i,s){return this.takeWhile(not(i),s)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var mt=Iterable.prototype;mt[s]=!0,mt[ce]=mt.values,mt.__toJS=mt.toArray,mt.__toStringMapper=quoteString,mt.inspect=mt.toSource=function(){return this.toString()},mt.chain=mt.flatMap,mt.contains=mt.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(i,s){var u=this,m=0;return reify(this,this.toSeq().map((function(v,_){return i.call(s,[_,v],m++,u)})).fromEntrySeq())},mapKeys:function(i,s){var u=this;return reify(this,this.toSeq().flip().map((function(m,v){return i.call(s,m,v,u)})).flip())}});var gt=KeyedIterable.prototype;function keyMapper(i,s){return s}function entryMapper(i,s){return[s,i]}function not(i){return function(){return!i.apply(this,arguments)}}function neg(i){return function(){return-i.apply(this,arguments)}}function quoteString(i){return"string"==typeof i?JSON.stringify(i):String(i)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(i,s){return is?-1:0}function hashIterable(i){if(i.size===1/0)return 0;var s=isOrdered(i),u=isKeyed(i),m=s?1:0;return murmurHashOfSize(i.__iterate(u?s?function(i,s){m=31*m+hashMerge(hash(i),hash(s))|0}:function(i,s){m=m+hashMerge(hash(i),hash(s))|0}:s?function(i){m=31*m+hash(i)|0}:function(i){m=m+hash(i)|0}),m)}function murmurHashOfSize(i,s){return s=be(s,3432918353),s=be(s<<15|s>>>-15,461845907),s=be(s<<13|s>>>-13,5),s=be((s=(s+3864292196|0)^i)^s>>>16,2246822507),s=smi((s=be(s^s>>>13,3266489909))^s>>>16)}function hashMerge(i,s){return i^s+2654435769+(i<<6)+(i>>2)|0}return gt[u]=!0,gt[ce]=mt.entries,gt.__toJS=mt.toObject,gt.__toStringMapper=function(i,s){return JSON.stringify(s)+": "+quoteString(i)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(i,s){return reify(this,filterFactory(this,i,s,!1))},findIndex:function(i,s){var u=this.findEntry(i,s);return u?u[0]:-1},indexOf:function(i){var s=this.keyOf(i);return void 0===s?-1:s},lastIndexOf:function(i){var s=this.lastKeyOf(i);return void 0===s?-1:s},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(i,s){return reify(this,sliceFactory(this,i,s,!1))},splice:function(i,s){var u=arguments.length;if(s=Math.max(0|s,0),0===u||2===u&&!s)return this;i=resolveBegin(i,i<0?this.count():this.size);var m=this.slice(0,i);return reify(this,1===u?m:m.concat(arrCopy(arguments,2),this.slice(i+s)))},findLastIndex:function(i,s){var u=this.findLastEntry(i,s);return u?u[0]:-1},first:function(){return this.get(0)},flatten:function(i){return reify(this,flattenFactory(this,i,!1))},get:function(i,s){return(i=wrapIndex(this,i))<0||this.size===1/0||void 0!==this.size&&i>this.size?s:this.find((function(s,u){return u===i}),void 0,s)},has:function(i){return(i=wrapIndex(this,i))>=0&&(void 0!==this.size?this.size===1/0||i{"function"==typeof Object.create?i.exports=function inherits(i,s){s&&(i.super_=s,i.prototype=Object.create(s.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}))}:i.exports=function inherits(i,s){if(s){i.super_=s;var TempCtor=function(){};TempCtor.prototype=s.prototype,i.prototype=new TempCtor,i.prototype.constructor=i}}},35823:i=>{i.exports=function(i,s,u,m){var v=new Blob(void 0!==m?[m,i]:[i],{type:u||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(v,s);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(v):window.webkitURL.createObjectURL(v),j=document.createElement("a");j.style.display="none",j.href=_,j.setAttribute("download",s),void 0===j.download&&j.setAttribute("target","_blank"),document.body.appendChild(j),j.click(),setTimeout((function(){document.body.removeChild(j),window.URL.revokeObjectURL(_)}),200)}}},91296:(i,s,u)=>{var m=NaN,v="[object Symbol]",_=/^\s+|\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,$=/^0o[0-7]+$/i,W=parseInt,X="object"==typeof u.g&&u.g&&u.g.Object===Object&&u.g,Y="object"==typeof self&&self&&self.Object===Object&&self,Z=X||Y||Function("return this")(),ee=Object.prototype.toString,ae=Math.max,ie=Math.min,now=function(){return Z.Date.now()};function isObject(i){var s=typeof i;return!!i&&("object"==s||"function"==s)}function toNumber(i){if("number"==typeof i)return i;if(function isSymbol(i){return"symbol"==typeof i||function isObjectLike(i){return!!i&&"object"==typeof i}(i)&&ee.call(i)==v}(i))return m;if(isObject(i)){var s="function"==typeof i.valueOf?i.valueOf():i;i=isObject(s)?s+"":s}if("string"!=typeof i)return 0===i?i:+i;i=i.replace(_,"");var u=M.test(i);return u||$.test(i)?W(i.slice(2),u?2:8):j.test(i)?m:+i}i.exports=function debounce(i,s,u){var m,v,_,j,M,$,W=0,X=!1,Y=!1,Z=!0;if("function"!=typeof i)throw new TypeError("Expected a function");function invokeFunc(s){var u=m,_=v;return m=v=void 0,W=s,j=i.apply(_,u)}function shouldInvoke(i){var u=i-$;return void 0===$||u>=s||u<0||Y&&i-W>=_}function timerExpired(){var i=now();if(shouldInvoke(i))return trailingEdge(i);M=setTimeout(timerExpired,function remainingWait(i){var u=s-(i-$);return Y?ie(u,_-(i-W)):u}(i))}function trailingEdge(i){return M=void 0,Z&&m?invokeFunc(i):(m=v=void 0,j)}function debounced(){var i=now(),u=shouldInvoke(i);if(m=arguments,v=this,$=i,u){if(void 0===M)return function leadingEdge(i){return W=i,M=setTimeout(timerExpired,s),X?invokeFunc(i):j}($);if(Y)return M=setTimeout(timerExpired,s),invokeFunc($)}return void 0===M&&(M=setTimeout(timerExpired,s)),j}return s=toNumber(s)||0,isObject(u)&&(X=!!u.leading,_=(Y="maxWait"in u)?ae(toNumber(u.maxWait)||0,s):_,Z="trailing"in u?!!u.trailing:Z),debounced.cancel=function cancel(){void 0!==M&&clearTimeout(M),W=0,m=$=v=M=void 0},debounced.flush=function flush(){return void 0===M?j:trailingEdge(now())},debounced}},18552:(i,s,u)=>{var m=u(10852)(u(55639),"DataView");i.exports=m},1989:(i,s,u)=>{var m=u(51789),v=u(80401),_=u(57667),j=u(21327),M=u(81866);function Hash(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(3118),v=u(9435);function LazyWrapper(i){this.__wrapped__=i,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}LazyWrapper.prototype=m(v.prototype),LazyWrapper.prototype.constructor=LazyWrapper,i.exports=LazyWrapper},38407:(i,s,u)=>{var m=u(27040),v=u(14125),_=u(82117),j=u(67518),M=u(54705);function ListCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(3118),v=u(9435);function LodashWrapper(i,s){this.__wrapped__=i,this.__actions__=[],this.__chain__=!!s,this.__index__=0,this.__values__=void 0}LodashWrapper.prototype=m(v.prototype),LodashWrapper.prototype.constructor=LodashWrapper,i.exports=LodashWrapper},57071:(i,s,u)=>{var m=u(10852)(u(55639),"Map");i.exports=m},83369:(i,s,u)=>{var m=u(24785),v=u(11285),_=u(96e3),j=u(49916),M=u(95265);function MapCache(i){var s=-1,u=null==i?0:i.length;for(this.clear();++s{var m=u(10852)(u(55639),"Promise");i.exports=m},58525:(i,s,u)=>{var m=u(10852)(u(55639),"Set");i.exports=m},88668:(i,s,u)=>{var m=u(83369),v=u(90619),_=u(72385);function SetCache(i){var s=-1,u=null==i?0:i.length;for(this.__data__=new m;++s{var m=u(38407),v=u(37465),_=u(63779),j=u(67599),M=u(44758),$=u(34309);function Stack(i){var s=this.__data__=new m(i);this.size=s.size}Stack.prototype.clear=v,Stack.prototype.delete=_,Stack.prototype.get=j,Stack.prototype.has=M,Stack.prototype.set=$,i.exports=Stack},62705:(i,s,u)=>{var m=u(55639).Symbol;i.exports=m},11149:(i,s,u)=>{var m=u(55639).Uint8Array;i.exports=m},70577:(i,s,u)=>{var m=u(10852)(u(55639),"WeakMap");i.exports=m},96874:i=>{i.exports=function apply(i,s,u){switch(u.length){case 0:return i.call(s);case 1:return i.call(s,u[0]);case 2:return i.call(s,u[0],u[1]);case 3:return i.call(s,u[0],u[1],u[2])}return i.apply(s,u)}},77412:i=>{i.exports=function arrayEach(i,s){for(var u=-1,m=null==i?0:i.length;++u{i.exports=function arrayFilter(i,s){for(var u=-1,m=null==i?0:i.length,v=0,_=[];++u{var m=u(42118);i.exports=function arrayIncludes(i,s){return!!(null==i?0:i.length)&&m(i,s,0)>-1}},14636:(i,s,u)=>{var m=u(22545),v=u(35694),_=u(1469),j=u(44144),M=u(65776),$=u(36719),W=Object.prototype.hasOwnProperty;i.exports=function arrayLikeKeys(i,s){var u=_(i),X=!u&&v(i),Y=!u&&!X&&j(i),Z=!u&&!X&&!Y&&$(i),ee=u||X||Y||Z,ae=ee?m(i.length,String):[],ie=ae.length;for(var le in i)!s&&!W.call(i,le)||ee&&("length"==le||Y&&("offset"==le||"parent"==le)||Z&&("buffer"==le||"byteLength"==le||"byteOffset"==le)||M(le,ie))||ae.push(le);return ae}},29932:i=>{i.exports=function arrayMap(i,s){for(var u=-1,m=null==i?0:i.length,v=Array(m);++u{i.exports=function arrayPush(i,s){for(var u=-1,m=s.length,v=i.length;++u{i.exports=function arrayReduce(i,s,u,m){var v=-1,_=null==i?0:i.length;for(m&&_&&(u=i[++v]);++v<_;)u=s(u,i[v],v,i);return u}},82908:i=>{i.exports=function arraySome(i,s){for(var u=-1,m=null==i?0:i.length;++u{i.exports=function asciiToArray(i){return i.split("")}},49029:i=>{var s=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;i.exports=function asciiWords(i){return i.match(s)||[]}},86556:(i,s,u)=>{var m=u(89465),v=u(77813);i.exports=function assignMergeValue(i,s,u){(void 0!==u&&!v(i[s],u)||void 0===u&&!(s in i))&&m(i,s,u)}},34865:(i,s,u)=>{var m=u(89465),v=u(77813),_=Object.prototype.hasOwnProperty;i.exports=function assignValue(i,s,u){var j=i[s];_.call(i,s)&&v(j,u)&&(void 0!==u||s in i)||m(i,s,u)}},18470:(i,s,u)=>{var m=u(77813);i.exports=function assocIndexOf(i,s){for(var u=i.length;u--;)if(m(i[u][0],s))return u;return-1}},44037:(i,s,u)=>{var m=u(98363),v=u(3674);i.exports=function baseAssign(i,s){return i&&m(s,v(s),i)}},63886:(i,s,u)=>{var m=u(98363),v=u(81704);i.exports=function baseAssignIn(i,s){return i&&m(s,v(s),i)}},89465:(i,s,u)=>{var m=u(38777);i.exports=function baseAssignValue(i,s,u){"__proto__"==s&&m?m(i,s,{configurable:!0,enumerable:!0,value:u,writable:!0}):i[s]=u}},85990:(i,s,u)=>{var m=u(46384),v=u(77412),_=u(34865),j=u(44037),M=u(63886),$=u(64626),W=u(278),X=u(18805),Y=u(1911),Z=u(58234),ee=u(46904),ae=u(64160),ie=u(43824),le=u(29148),ce=u(38517),pe=u(1469),de=u(44144),fe=u(56688),ye=u(13218),be=u(72928),_e=u(3674),we=u(81704),Se="[object Arguments]",xe="[object Function]",Pe="[object Object]",Ie={};Ie[Se]=Ie["[object Array]"]=Ie["[object ArrayBuffer]"]=Ie["[object DataView]"]=Ie["[object Boolean]"]=Ie["[object Date]"]=Ie["[object Float32Array]"]=Ie["[object Float64Array]"]=Ie["[object Int8Array]"]=Ie["[object Int16Array]"]=Ie["[object Int32Array]"]=Ie["[object Map]"]=Ie["[object Number]"]=Ie[Pe]=Ie["[object RegExp]"]=Ie["[object Set]"]=Ie["[object String]"]=Ie["[object Symbol]"]=Ie["[object Uint8Array]"]=Ie["[object Uint8ClampedArray]"]=Ie["[object Uint16Array]"]=Ie["[object Uint32Array]"]=!0,Ie["[object Error]"]=Ie[xe]=Ie["[object WeakMap]"]=!1,i.exports=function baseClone(i,s,u,Te,Re,qe){var ze,Ve=1&s,We=2&s,He=4&s;if(u&&(ze=Re?u(i,Te,Re,qe):u(i)),void 0!==ze)return ze;if(!ye(i))return i;var Xe=pe(i);if(Xe){if(ze=ie(i),!Ve)return W(i,ze)}else{var Ye=ae(i),Qe=Ye==xe||"[object GeneratorFunction]"==Ye;if(de(i))return $(i,Ve);if(Ye==Pe||Ye==Se||Qe&&!Re){if(ze=We||Qe?{}:ce(i),!Ve)return We?Y(i,M(ze,i)):X(i,j(ze,i))}else{if(!Ie[Ye])return Re?i:{};ze=le(i,Ye,Ve)}}qe||(qe=new m);var et=qe.get(i);if(et)return et;qe.set(i,ze),be(i)?i.forEach((function(m){ze.add(baseClone(m,s,u,m,i,qe))})):fe(i)&&i.forEach((function(m,v){ze.set(v,baseClone(m,s,u,v,i,qe))}));var tt=Xe?void 0:(He?We?ee:Z:We?we:_e)(i);return v(tt||i,(function(m,v){tt&&(m=i[v=m]),_(ze,v,baseClone(m,s,u,v,i,qe))})),ze}},3118:(i,s,u)=>{var m=u(13218),v=Object.create,_=function(){function object(){}return function(i){if(!m(i))return{};if(v)return v(i);object.prototype=i;var s=new object;return object.prototype=void 0,s}}();i.exports=_},89881:(i,s,u)=>{var m=u(47816),v=u(99291)(m);i.exports=v},41848:i=>{i.exports=function baseFindIndex(i,s,u,m){for(var v=i.length,_=u+(m?1:-1);m?_--:++_{var m=u(62488),v=u(37285);i.exports=function baseFlatten(i,s,u,_,j){var M=-1,$=i.length;for(u||(u=v),j||(j=[]);++M<$;){var W=i[M];s>0&&u(W)?s>1?baseFlatten(W,s-1,u,_,j):m(j,W):_||(j[j.length]=W)}return j}},28483:(i,s,u)=>{var m=u(25063)();i.exports=m},47816:(i,s,u)=>{var m=u(28483),v=u(3674);i.exports=function baseForOwn(i,s){return i&&m(i,s,v)}},97786:(i,s,u)=>{var m=u(71811),v=u(40327);i.exports=function baseGet(i,s){for(var u=0,_=(s=m(s,i)).length;null!=i&&u<_;)i=i[v(s[u++])];return u&&u==_?i:void 0}},68866:(i,s,u)=>{var m=u(62488),v=u(1469);i.exports=function baseGetAllKeys(i,s,u){var _=s(i);return v(i)?_:m(_,u(i))}},44239:(i,s,u)=>{var m=u(62705),v=u(89607),_=u(2333),j=m?m.toStringTag:void 0;i.exports=function baseGetTag(i){return null==i?void 0===i?"[object Undefined]":"[object Null]":j&&j in Object(i)?v(i):_(i)}},13:i=>{i.exports=function baseHasIn(i,s){return null!=i&&s in Object(i)}},42118:(i,s,u)=>{var m=u(41848),v=u(62722),_=u(42351);i.exports=function baseIndexOf(i,s,u){return s==s?_(i,s,u):m(i,v,u)}},9454:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function baseIsArguments(i){return v(i)&&"[object Arguments]"==m(i)}},90939:(i,s,u)=>{var m=u(2492),v=u(37005);i.exports=function baseIsEqual(i,s,u,_,j){return i===s||(null==i||null==s||!v(i)&&!v(s)?i!=i&&s!=s:m(i,s,u,_,baseIsEqual,j))}},2492:(i,s,u)=>{var m=u(46384),v=u(67114),_=u(18351),j=u(16096),M=u(64160),$=u(1469),W=u(44144),X=u(36719),Y="[object Arguments]",Z="[object Array]",ee="[object Object]",ae=Object.prototype.hasOwnProperty;i.exports=function baseIsEqualDeep(i,s,u,ie,le,ce){var pe=$(i),de=$(s),fe=pe?Z:M(i),ye=de?Z:M(s),be=(fe=fe==Y?ee:fe)==ee,_e=(ye=ye==Y?ee:ye)==ee,we=fe==ye;if(we&&W(i)){if(!W(s))return!1;pe=!0,be=!1}if(we&&!be)return ce||(ce=new m),pe||X(i)?v(i,s,u,ie,le,ce):_(i,s,fe,u,ie,le,ce);if(!(1&u)){var Se=be&&ae.call(i,"__wrapped__"),xe=_e&&ae.call(s,"__wrapped__");if(Se||xe){var Pe=Se?i.value():i,Ie=xe?s.value():s;return ce||(ce=new m),le(Pe,Ie,u,ie,ce)}}return!!we&&(ce||(ce=new m),j(i,s,u,ie,le,ce))}},25588:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function baseIsMap(i){return v(i)&&"[object Map]"==m(i)}},2958:(i,s,u)=>{var m=u(46384),v=u(90939);i.exports=function baseIsMatch(i,s,u,_){var j=u.length,M=j,$=!_;if(null==i)return!M;for(i=Object(i);j--;){var W=u[j];if($&&W[2]?W[1]!==i[W[0]]:!(W[0]in i))return!1}for(;++j{i.exports=function baseIsNaN(i){return i!=i}},28458:(i,s,u)=>{var m=u(23560),v=u(15346),_=u(13218),j=u(80346),M=/^\[object .+?Constructor\]$/,$=Function.prototype,W=Object.prototype,X=$.toString,Y=W.hasOwnProperty,Z=RegExp("^"+X.call(Y).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");i.exports=function baseIsNative(i){return!(!_(i)||v(i))&&(m(i)?Z:M).test(j(i))}},29221:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function baseIsSet(i){return v(i)&&"[object Set]"==m(i)}},38749:(i,s,u)=>{var m=u(44239),v=u(41780),_=u(37005),j={};j["[object Float32Array]"]=j["[object Float64Array]"]=j["[object Int8Array]"]=j["[object Int16Array]"]=j["[object Int32Array]"]=j["[object Uint8Array]"]=j["[object Uint8ClampedArray]"]=j["[object Uint16Array]"]=j["[object Uint32Array]"]=!0,j["[object Arguments]"]=j["[object Array]"]=j["[object ArrayBuffer]"]=j["[object Boolean]"]=j["[object DataView]"]=j["[object Date]"]=j["[object Error]"]=j["[object Function]"]=j["[object Map]"]=j["[object Number]"]=j["[object Object]"]=j["[object RegExp]"]=j["[object Set]"]=j["[object String]"]=j["[object WeakMap]"]=!1,i.exports=function baseIsTypedArray(i){return _(i)&&v(i.length)&&!!j[m(i)]}},67206:(i,s,u)=>{var m=u(91573),v=u(16432),_=u(6557),j=u(1469),M=u(39601);i.exports=function baseIteratee(i){return"function"==typeof i?i:null==i?_:"object"==typeof i?j(i)?v(i[0],i[1]):m(i):M(i)}},280:(i,s,u)=>{var m=u(25726),v=u(86916),_=Object.prototype.hasOwnProperty;i.exports=function baseKeys(i){if(!m(i))return v(i);var s=[];for(var u in Object(i))_.call(i,u)&&"constructor"!=u&&s.push(u);return s}},10313:(i,s,u)=>{var m=u(13218),v=u(25726),_=u(33498),j=Object.prototype.hasOwnProperty;i.exports=function baseKeysIn(i){if(!m(i))return _(i);var s=v(i),u=[];for(var M in i)("constructor"!=M||!s&&j.call(i,M))&&u.push(M);return u}},9435:i=>{i.exports=function baseLodash(){}},91573:(i,s,u)=>{var m=u(2958),v=u(1499),_=u(42634);i.exports=function baseMatches(i){var s=v(i);return 1==s.length&&s[0][2]?_(s[0][0],s[0][1]):function(u){return u===i||m(u,i,s)}}},16432:(i,s,u)=>{var m=u(90939),v=u(27361),_=u(79095),j=u(15403),M=u(89162),$=u(42634),W=u(40327);i.exports=function baseMatchesProperty(i,s){return j(i)&&M(s)?$(W(i),s):function(u){var j=v(u,i);return void 0===j&&j===s?_(u,i):m(s,j,3)}}},42980:(i,s,u)=>{var m=u(46384),v=u(86556),_=u(28483),j=u(59783),M=u(13218),$=u(81704),W=u(36390);i.exports=function baseMerge(i,s,u,X,Y){i!==s&&_(s,(function(_,$){if(Y||(Y=new m),M(_))j(i,s,$,u,baseMerge,X,Y);else{var Z=X?X(W(i,$),_,$+"",i,s,Y):void 0;void 0===Z&&(Z=_),v(i,$,Z)}}),$)}},59783:(i,s,u)=>{var m=u(86556),v=u(64626),_=u(77133),j=u(278),M=u(38517),$=u(35694),W=u(1469),X=u(29246),Y=u(44144),Z=u(23560),ee=u(13218),ae=u(68630),ie=u(36719),le=u(36390),ce=u(59881);i.exports=function baseMergeDeep(i,s,u,pe,de,fe,ye){var be=le(i,u),_e=le(s,u),we=ye.get(_e);if(we)m(i,u,we);else{var Se=fe?fe(be,_e,u+"",i,s,ye):void 0,xe=void 0===Se;if(xe){var Pe=W(_e),Ie=!Pe&&Y(_e),Te=!Pe&&!Ie&&ie(_e);Se=_e,Pe||Ie||Te?W(be)?Se=be:X(be)?Se=j(be):Ie?(xe=!1,Se=v(_e,!0)):Te?(xe=!1,Se=_(_e,!0)):Se=[]:ae(_e)||$(_e)?(Se=be,$(be)?Se=ce(be):ee(be)&&!Z(be)||(Se=M(_e))):xe=!1}xe&&(ye.set(_e,Se),de(Se,_e,pe,fe,ye),ye.delete(_e)),m(i,u,Se)}}},40371:i=>{i.exports=function baseProperty(i){return function(s){return null==s?void 0:s[i]}}},79152:(i,s,u)=>{var m=u(97786);i.exports=function basePropertyDeep(i){return function(s){return m(s,i)}}},18674:i=>{i.exports=function basePropertyOf(i){return function(s){return null==i?void 0:i[s]}}},10107:i=>{i.exports=function baseReduce(i,s,u,m,v){return v(i,(function(i,v,_){u=m?(m=!1,i):s(u,i,v,_)})),u}},5976:(i,s,u)=>{var m=u(6557),v=u(45357),_=u(30061);i.exports=function baseRest(i,s){return _(v(i,s,m),i+"")}},10611:(i,s,u)=>{var m=u(34865),v=u(71811),_=u(65776),j=u(13218),M=u(40327);i.exports=function baseSet(i,s,u,$){if(!j(i))return i;for(var W=-1,X=(s=v(s,i)).length,Y=X-1,Z=i;null!=Z&&++W{var m=u(6557),v=u(89250),_=v?function(i,s){return v.set(i,s),i}:m;i.exports=_},56560:(i,s,u)=>{var m=u(75703),v=u(38777),_=u(6557),j=v?function(i,s){return v(i,"toString",{configurable:!0,enumerable:!1,value:m(s),writable:!0})}:_;i.exports=j},14259:i=>{i.exports=function baseSlice(i,s,u){var m=-1,v=i.length;s<0&&(s=-s>v?0:v+s),(u=u>v?v:u)<0&&(u+=v),v=s>u?0:u-s>>>0,s>>>=0;for(var _=Array(v);++m{var m=u(89881);i.exports=function baseSome(i,s){var u;return m(i,(function(i,m,v){return!(u=s(i,m,v))})),!!u}},22545:i=>{i.exports=function baseTimes(i,s){for(var u=-1,m=Array(i);++u{var m=u(62705),v=u(29932),_=u(1469),j=u(33448),M=m?m.prototype:void 0,$=M?M.toString:void 0;i.exports=function baseToString(i){if("string"==typeof i)return i;if(_(i))return v(i,baseToString)+"";if(j(i))return $?$.call(i):"";var s=i+"";return"0"==s&&1/i==-Infinity?"-0":s}},27561:(i,s,u)=>{var m=u(67990),v=/^\s+/;i.exports=function baseTrim(i){return i?i.slice(0,m(i)+1).replace(v,""):i}},7518:i=>{i.exports=function baseUnary(i){return function(s){return i(s)}}},57406:(i,s,u)=>{var m=u(71811),v=u(10928),_=u(40292),j=u(40327);i.exports=function baseUnset(i,s){return s=m(s,i),null==(i=_(i,s))||delete i[j(v(s))]}},1757:i=>{i.exports=function baseZipObject(i,s,u){for(var m=-1,v=i.length,_=s.length,j={};++m{i.exports=function cacheHas(i,s){return i.has(s)}},71811:(i,s,u)=>{var m=u(1469),v=u(15403),_=u(55514),j=u(79833);i.exports=function castPath(i,s){return m(i)?i:v(i,s)?[i]:_(j(i))}},40180:(i,s,u)=>{var m=u(14259);i.exports=function castSlice(i,s,u){var v=i.length;return u=void 0===u?v:u,!s&&u>=v?i:m(i,s,u)}},74318:(i,s,u)=>{var m=u(11149);i.exports=function cloneArrayBuffer(i){var s=new i.constructor(i.byteLength);return new m(s).set(new m(i)),s}},64626:(i,s,u)=>{i=u.nmd(i);var m=u(55639),v=s&&!s.nodeType&&s,_=v&&i&&!i.nodeType&&i,j=_&&_.exports===v?m.Buffer:void 0,M=j?j.allocUnsafe:void 0;i.exports=function cloneBuffer(i,s){if(s)return i.slice();var u=i.length,m=M?M(u):new i.constructor(u);return i.copy(m),m}},57157:(i,s,u)=>{var m=u(74318);i.exports=function cloneDataView(i,s){var u=s?m(i.buffer):i.buffer;return new i.constructor(u,i.byteOffset,i.byteLength)}},93147:i=>{var s=/\w*$/;i.exports=function cloneRegExp(i){var u=new i.constructor(i.source,s.exec(i));return u.lastIndex=i.lastIndex,u}},40419:(i,s,u)=>{var m=u(62705),v=m?m.prototype:void 0,_=v?v.valueOf:void 0;i.exports=function cloneSymbol(i){return _?Object(_.call(i)):{}}},77133:(i,s,u)=>{var m=u(74318);i.exports=function cloneTypedArray(i,s){var u=s?m(i.buffer):i.buffer;return new i.constructor(u,i.byteOffset,i.length)}},52157:i=>{var s=Math.max;i.exports=function composeArgs(i,u,m,v){for(var _=-1,j=i.length,M=m.length,$=-1,W=u.length,X=s(j-M,0),Y=Array(W+X),Z=!v;++${var s=Math.max;i.exports=function composeArgsRight(i,u,m,v){for(var _=-1,j=i.length,M=-1,$=m.length,W=-1,X=u.length,Y=s(j-$,0),Z=Array(Y+X),ee=!v;++_{i.exports=function copyArray(i,s){var u=-1,m=i.length;for(s||(s=Array(m));++u{var m=u(34865),v=u(89465);i.exports=function copyObject(i,s,u,_){var j=!u;u||(u={});for(var M=-1,$=s.length;++M<$;){var W=s[M],X=_?_(u[W],i[W],W,u,i):void 0;void 0===X&&(X=i[W]),j?v(u,W,X):m(u,W,X)}return u}},18805:(i,s,u)=>{var m=u(98363),v=u(99551);i.exports=function copySymbols(i,s){return m(i,v(i),s)}},1911:(i,s,u)=>{var m=u(98363),v=u(51442);i.exports=function copySymbolsIn(i,s){return m(i,v(i),s)}},14429:(i,s,u)=>{var m=u(55639)["__core-js_shared__"];i.exports=m},97991:i=>{i.exports=function countHolders(i,s){for(var u=i.length,m=0;u--;)i[u]===s&&++m;return m}},21463:(i,s,u)=>{var m=u(5976),v=u(16612);i.exports=function createAssigner(i){return m((function(s,u){var m=-1,_=u.length,j=_>1?u[_-1]:void 0,M=_>2?u[2]:void 0;for(j=i.length>3&&"function"==typeof j?(_--,j):void 0,M&&v(u[0],u[1],M)&&(j=_<3?void 0:j,_=1),s=Object(s);++m<_;){var $=u[m];$&&i(s,$,m,j)}return s}))}},99291:(i,s,u)=>{var m=u(98612);i.exports=function createBaseEach(i,s){return function(u,v){if(null==u)return u;if(!m(u))return i(u,v);for(var _=u.length,j=s?_:-1,M=Object(u);(s?j--:++j<_)&&!1!==v(M[j],j,M););return u}}},25063:i=>{i.exports=function createBaseFor(i){return function(s,u,m){for(var v=-1,_=Object(s),j=m(s),M=j.length;M--;){var $=j[i?M:++v];if(!1===u(_[$],$,_))break}return s}}},22402:(i,s,u)=>{var m=u(71774),v=u(55639);i.exports=function createBind(i,s,u){var _=1&s,j=m(i);return function wrapper(){return(this&&this!==v&&this instanceof wrapper?j:i).apply(_?u:this,arguments)}}},98805:(i,s,u)=>{var m=u(40180),v=u(62689),_=u(83140),j=u(79833);i.exports=function createCaseFirst(i){return function(s){s=j(s);var u=v(s)?_(s):void 0,M=u?u[0]:s.charAt(0),$=u?m(u,1).join(""):s.slice(1);return M[i]()+$}}},35393:(i,s,u)=>{var m=u(62663),v=u(53816),_=u(58748),j=RegExp("['’]","g");i.exports=function createCompounder(i){return function(s){return m(_(v(s).replace(j,"")),i,"")}}},71774:(i,s,u)=>{var m=u(3118),v=u(13218);i.exports=function createCtor(i){return function(){var s=arguments;switch(s.length){case 0:return new i;case 1:return new i(s[0]);case 2:return new i(s[0],s[1]);case 3:return new i(s[0],s[1],s[2]);case 4:return new i(s[0],s[1],s[2],s[3]);case 5:return new i(s[0],s[1],s[2],s[3],s[4]);case 6:return new i(s[0],s[1],s[2],s[3],s[4],s[5]);case 7:return new i(s[0],s[1],s[2],s[3],s[4],s[5],s[6])}var u=m(i.prototype),_=i.apply(u,s);return v(_)?_:u}}},46347:(i,s,u)=>{var m=u(96874),v=u(71774),_=u(86935),j=u(94487),M=u(20893),$=u(46460),W=u(55639);i.exports=function createCurry(i,s,u){var X=v(i);return function wrapper(){for(var v=arguments.length,Y=Array(v),Z=v,ee=M(wrapper);Z--;)Y[Z]=arguments[Z];var ae=v<3&&Y[0]!==ee&&Y[v-1]!==ee?[]:$(Y,ee);return(v-=ae.length){var m=u(67206),v=u(98612),_=u(3674);i.exports=function createFind(i){return function(s,u,j){var M=Object(s);if(!v(s)){var $=m(u,3);s=_(s),u=function(i){return $(M[i],i,M)}}var W=i(s,u,j);return W>-1?M[$?s[W]:W]:void 0}}},86935:(i,s,u)=>{var m=u(52157),v=u(14054),_=u(97991),j=u(71774),M=u(94487),$=u(20893),W=u(90451),X=u(46460),Y=u(55639);i.exports=function createHybrid(i,s,u,Z,ee,ae,ie,le,ce,pe){var de=128&s,fe=1&s,ye=2&s,be=24&s,_e=512&s,we=ye?void 0:j(i);return function wrapper(){for(var Se=arguments.length,xe=Array(Se),Pe=Se;Pe--;)xe[Pe]=arguments[Pe];if(be)var Ie=$(wrapper),Te=_(xe,Ie);if(Z&&(xe=m(xe,Z,ee,be)),ae&&(xe=v(xe,ae,ie,be)),Se-=Te,be&&Se1&&xe.reverse(),de&&ce{var m=u(96874),v=u(71774),_=u(55639);i.exports=function createPartial(i,s,u,j){var M=1&s,$=v(i);return function wrapper(){for(var s=-1,v=arguments.length,W=-1,X=j.length,Y=Array(X+v),Z=this&&this!==_&&this instanceof wrapper?$:i;++W{var m=u(86528),v=u(258),_=u(69255);i.exports=function createRecurry(i,s,u,j,M,$,W,X,Y,Z){var ee=8&s;s|=ee?32:64,4&(s&=~(ee?64:32))||(s&=-4);var ae=[i,s,M,ee?$:void 0,ee?W:void 0,ee?void 0:$,ee?void 0:W,X,Y,Z],ie=u.apply(void 0,ae);return m(i)&&v(ie,ae),ie.placeholder=j,_(ie,i,s)}},97727:(i,s,u)=>{var m=u(28045),v=u(22402),_=u(46347),j=u(86935),M=u(84375),$=u(66833),W=u(63833),X=u(258),Y=u(69255),Z=u(40554),ee=Math.max;i.exports=function createWrap(i,s,u,ae,ie,le,ce,pe){var de=2&s;if(!de&&"function"!=typeof i)throw new TypeError("Expected a function");var fe=ae?ae.length:0;if(fe||(s&=-97,ae=ie=void 0),ce=void 0===ce?ce:ee(Z(ce),0),pe=void 0===pe?pe:Z(pe),fe-=ie?ie.length:0,64&s){var ye=ae,be=ie;ae=ie=void 0}var _e=de?void 0:$(i),we=[i,s,u,ae,ie,ye,be,le,ce,pe];if(_e&&W(we,_e),i=we[0],s=we[1],u=we[2],ae=we[3],ie=we[4],!(pe=we[9]=void 0===we[9]?de?0:i.length:ee(we[9]-fe,0))&&24&s&&(s&=-25),s&&1!=s)Se=8==s||16==s?_(i,s,pe):32!=s&&33!=s||ie.length?j.apply(void 0,we):M(i,s,u,ae);else var Se=v(i,s,u);return Y((_e?m:X)(Se,we),i,s)}},60696:(i,s,u)=>{var m=u(68630);i.exports=function customOmitClone(i){return m(i)?void 0:i}},69389:(i,s,u)=>{var m=u(18674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});i.exports=m},38777:(i,s,u)=>{var m=u(10852),v=function(){try{var i=m(Object,"defineProperty");return i({},"",{}),i}catch(i){}}();i.exports=v},67114:(i,s,u)=>{var m=u(88668),v=u(82908),_=u(74757);i.exports=function equalArrays(i,s,u,j,M,$){var W=1&u,X=i.length,Y=s.length;if(X!=Y&&!(W&&Y>X))return!1;var Z=$.get(i),ee=$.get(s);if(Z&&ee)return Z==s&&ee==i;var ae=-1,ie=!0,le=2&u?new m:void 0;for($.set(i,s),$.set(s,i);++ae{var m=u(62705),v=u(11149),_=u(77813),j=u(67114),M=u(68776),$=u(21814),W=m?m.prototype:void 0,X=W?W.valueOf:void 0;i.exports=function equalByTag(i,s,u,m,W,Y,Z){switch(u){case"[object DataView]":if(i.byteLength!=s.byteLength||i.byteOffset!=s.byteOffset)return!1;i=i.buffer,s=s.buffer;case"[object ArrayBuffer]":return!(i.byteLength!=s.byteLength||!Y(new v(i),new v(s)));case"[object Boolean]":case"[object Date]":case"[object Number]":return _(+i,+s);case"[object Error]":return i.name==s.name&&i.message==s.message;case"[object RegExp]":case"[object String]":return i==s+"";case"[object Map]":var ee=M;case"[object Set]":var ae=1&m;if(ee||(ee=$),i.size!=s.size&&!ae)return!1;var ie=Z.get(i);if(ie)return ie==s;m|=2,Z.set(i,s);var le=j(ee(i),ee(s),m,W,Y,Z);return Z.delete(i),le;case"[object Symbol]":if(X)return X.call(i)==X.call(s)}return!1}},16096:(i,s,u)=>{var m=u(58234),v=Object.prototype.hasOwnProperty;i.exports=function equalObjects(i,s,u,_,j,M){var $=1&u,W=m(i),X=W.length;if(X!=m(s).length&&!$)return!1;for(var Y=X;Y--;){var Z=W[Y];if(!($?Z in s:v.call(s,Z)))return!1}var ee=M.get(i),ae=M.get(s);if(ee&&ae)return ee==s&&ae==i;var ie=!0;M.set(i,s),M.set(s,i);for(var le=$;++Y{var m=u(85564),v=u(45357),_=u(30061);i.exports=function flatRest(i){return _(v(i,void 0,m),i+"")}},31957:(i,s,u)=>{var m="object"==typeof u.g&&u.g&&u.g.Object===Object&&u.g;i.exports=m},58234:(i,s,u)=>{var m=u(68866),v=u(99551),_=u(3674);i.exports=function getAllKeys(i){return m(i,_,v)}},46904:(i,s,u)=>{var m=u(68866),v=u(51442),_=u(81704);i.exports=function getAllKeysIn(i){return m(i,_,v)}},66833:(i,s,u)=>{var m=u(89250),v=u(50308),_=m?function(i){return m.get(i)}:v;i.exports=_},97658:(i,s,u)=>{var m=u(52060),v=Object.prototype.hasOwnProperty;i.exports=function getFuncName(i){for(var s=i.name+"",u=m[s],_=v.call(m,s)?u.length:0;_--;){var j=u[_],M=j.func;if(null==M||M==i)return j.name}return s}},20893:i=>{i.exports=function getHolder(i){return i.placeholder}},45050:(i,s,u)=>{var m=u(37019);i.exports=function getMapData(i,s){var u=i.__data__;return m(s)?u["string"==typeof s?"string":"hash"]:u.map}},1499:(i,s,u)=>{var m=u(89162),v=u(3674);i.exports=function getMatchData(i){for(var s=v(i),u=s.length;u--;){var _=s[u],j=i[_];s[u]=[_,j,m(j)]}return s}},10852:(i,s,u)=>{var m=u(28458),v=u(47801);i.exports=function getNative(i,s){var u=v(i,s);return m(u)?u:void 0}},85924:(i,s,u)=>{var m=u(5569)(Object.getPrototypeOf,Object);i.exports=m},89607:(i,s,u)=>{var m=u(62705),v=Object.prototype,_=v.hasOwnProperty,j=v.toString,M=m?m.toStringTag:void 0;i.exports=function getRawTag(i){var s=_.call(i,M),u=i[M];try{i[M]=void 0;var m=!0}catch(i){}var v=j.call(i);return m&&(s?i[M]=u:delete i[M]),v}},99551:(i,s,u)=>{var m=u(34963),v=u(70479),_=Object.prototype.propertyIsEnumerable,j=Object.getOwnPropertySymbols,M=j?function(i){return null==i?[]:(i=Object(i),m(j(i),(function(s){return _.call(i,s)})))}:v;i.exports=M},51442:(i,s,u)=>{var m=u(62488),v=u(85924),_=u(99551),j=u(70479),M=Object.getOwnPropertySymbols?function(i){for(var s=[];i;)m(s,_(i)),i=v(i);return s}:j;i.exports=M},64160:(i,s,u)=>{var m=u(18552),v=u(57071),_=u(53818),j=u(58525),M=u(70577),$=u(44239),W=u(80346),X="[object Map]",Y="[object Promise]",Z="[object Set]",ee="[object WeakMap]",ae="[object DataView]",ie=W(m),le=W(v),ce=W(_),pe=W(j),de=W(M),fe=$;(m&&fe(new m(new ArrayBuffer(1)))!=ae||v&&fe(new v)!=X||_&&fe(_.resolve())!=Y||j&&fe(new j)!=Z||M&&fe(new M)!=ee)&&(fe=function(i){var s=$(i),u="[object Object]"==s?i.constructor:void 0,m=u?W(u):"";if(m)switch(m){case ie:return ae;case le:return X;case ce:return Y;case pe:return Z;case de:return ee}return s}),i.exports=fe},47801:i=>{i.exports=function getValue(i,s){return null==i?void 0:i[s]}},58775:i=>{var s=/\{\n\/\* \[wrapped with (.+)\] \*/,u=/,? & /;i.exports=function getWrapDetails(i){var m=i.match(s);return m?m[1].split(u):[]}},222:(i,s,u)=>{var m=u(71811),v=u(35694),_=u(1469),j=u(65776),M=u(41780),$=u(40327);i.exports=function hasPath(i,s,u){for(var W=-1,X=(s=m(s,i)).length,Y=!1;++W{var s=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");i.exports=function hasUnicode(i){return s.test(i)}},93157:i=>{var s=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;i.exports=function hasUnicodeWord(i){return s.test(i)}},51789:(i,s,u)=>{var m=u(94536);i.exports=function hashClear(){this.__data__=m?m(null):{},this.size=0}},80401:i=>{i.exports=function hashDelete(i){var s=this.has(i)&&delete this.__data__[i];return this.size-=s?1:0,s}},57667:(i,s,u)=>{var m=u(94536),v=Object.prototype.hasOwnProperty;i.exports=function hashGet(i){var s=this.__data__;if(m){var u=s[i];return"__lodash_hash_undefined__"===u?void 0:u}return v.call(s,i)?s[i]:void 0}},21327:(i,s,u)=>{var m=u(94536),v=Object.prototype.hasOwnProperty;i.exports=function hashHas(i){var s=this.__data__;return m?void 0!==s[i]:v.call(s,i)}},81866:(i,s,u)=>{var m=u(94536);i.exports=function hashSet(i,s){var u=this.__data__;return this.size+=this.has(i)?0:1,u[i]=m&&void 0===s?"__lodash_hash_undefined__":s,this}},43824:i=>{var s=Object.prototype.hasOwnProperty;i.exports=function initCloneArray(i){var u=i.length,m=new i.constructor(u);return u&&"string"==typeof i[0]&&s.call(i,"index")&&(m.index=i.index,m.input=i.input),m}},29148:(i,s,u)=>{var m=u(74318),v=u(57157),_=u(93147),j=u(40419),M=u(77133);i.exports=function initCloneByTag(i,s,u){var $=i.constructor;switch(s){case"[object ArrayBuffer]":return m(i);case"[object Boolean]":case"[object Date]":return new $(+i);case"[object DataView]":return v(i,u);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return M(i,u);case"[object Map]":case"[object Set]":return new $;case"[object Number]":case"[object String]":return new $(i);case"[object RegExp]":return _(i);case"[object Symbol]":return j(i)}}},38517:(i,s,u)=>{var m=u(3118),v=u(85924),_=u(25726);i.exports=function initCloneObject(i){return"function"!=typeof i.constructor||_(i)?{}:m(v(i))}},83112:i=>{var s=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;i.exports=function insertWrapDetails(i,u){var m=u.length;if(!m)return i;var v=m-1;return u[v]=(m>1?"& ":"")+u[v],u=u.join(m>2?", ":" "),i.replace(s,"{\n/* [wrapped with "+u+"] */\n")}},37285:(i,s,u)=>{var m=u(62705),v=u(35694),_=u(1469),j=m?m.isConcatSpreadable:void 0;i.exports=function isFlattenable(i){return _(i)||v(i)||!!(j&&i&&i[j])}},65776:i=>{var s=/^(?:0|[1-9]\d*)$/;i.exports=function isIndex(i,u){var m=typeof i;return!!(u=null==u?9007199254740991:u)&&("number"==m||"symbol"!=m&&s.test(i))&&i>-1&&i%1==0&&i{var m=u(77813),v=u(98612),_=u(65776),j=u(13218);i.exports=function isIterateeCall(i,s,u){if(!j(u))return!1;var M=typeof s;return!!("number"==M?v(u)&&_(s,u.length):"string"==M&&s in u)&&m(u[s],i)}},15403:(i,s,u)=>{var m=u(1469),v=u(33448),_=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,j=/^\w*$/;i.exports=function isKey(i,s){if(m(i))return!1;var u=typeof i;return!("number"!=u&&"symbol"!=u&&"boolean"!=u&&null!=i&&!v(i))||(j.test(i)||!_.test(i)||null!=s&&i in Object(s))}},37019:i=>{i.exports=function isKeyable(i){var s=typeof i;return"string"==s||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==i:null===i}},86528:(i,s,u)=>{var m=u(96425),v=u(66833),_=u(97658),j=u(8111);i.exports=function isLaziable(i){var s=_(i),u=j[s];if("function"!=typeof u||!(s in m.prototype))return!1;if(i===u)return!0;var M=v(u);return!!M&&i===M[0]}},15346:(i,s,u)=>{var m,v=u(14429),_=(m=/[^.]+$/.exec(v&&v.keys&&v.keys.IE_PROTO||""))?"Symbol(src)_1."+m:"";i.exports=function isMasked(i){return!!_&&_ in i}},25726:i=>{var s=Object.prototype;i.exports=function isPrototype(i){var u=i&&i.constructor;return i===("function"==typeof u&&u.prototype||s)}},89162:(i,s,u)=>{var m=u(13218);i.exports=function isStrictComparable(i){return i==i&&!m(i)}},27040:i=>{i.exports=function listCacheClear(){this.__data__=[],this.size=0}},14125:(i,s,u)=>{var m=u(18470),v=Array.prototype.splice;i.exports=function listCacheDelete(i){var s=this.__data__,u=m(s,i);return!(u<0)&&(u==s.length-1?s.pop():v.call(s,u,1),--this.size,!0)}},82117:(i,s,u)=>{var m=u(18470);i.exports=function listCacheGet(i){var s=this.__data__,u=m(s,i);return u<0?void 0:s[u][1]}},67518:(i,s,u)=>{var m=u(18470);i.exports=function listCacheHas(i){return m(this.__data__,i)>-1}},54705:(i,s,u)=>{var m=u(18470);i.exports=function listCacheSet(i,s){var u=this.__data__,v=m(u,i);return v<0?(++this.size,u.push([i,s])):u[v][1]=s,this}},24785:(i,s,u)=>{var m=u(1989),v=u(38407),_=u(57071);i.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new m,map:new(_||v),string:new m}}},11285:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheDelete(i){var s=m(this,i).delete(i);return this.size-=s?1:0,s}},96e3:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheGet(i){return m(this,i).get(i)}},49916:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheHas(i){return m(this,i).has(i)}},95265:(i,s,u)=>{var m=u(45050);i.exports=function mapCacheSet(i,s){var u=m(this,i),v=u.size;return u.set(i,s),this.size+=u.size==v?0:1,this}},68776:i=>{i.exports=function mapToArray(i){var s=-1,u=Array(i.size);return i.forEach((function(i,m){u[++s]=[m,i]})),u}},42634:i=>{i.exports=function matchesStrictComparable(i,s){return function(u){return null!=u&&(u[i]===s&&(void 0!==s||i in Object(u)))}}},24523:(i,s,u)=>{var m=u(88306);i.exports=function memoizeCapped(i){var s=m(i,(function(i){return 500===u.size&&u.clear(),i})),u=s.cache;return s}},63833:(i,s,u)=>{var m=u(52157),v=u(14054),_=u(46460),j="__lodash_placeholder__",M=128,$=Math.min;i.exports=function mergeData(i,s){var u=i[1],W=s[1],X=u|W,Y=X<131,Z=W==M&&8==u||W==M&&256==u&&i[7].length<=s[8]||384==W&&s[7].length<=s[8]&&8==u;if(!Y&&!Z)return i;1&W&&(i[2]=s[2],X|=1&u?0:4);var ee=s[3];if(ee){var ae=i[3];i[3]=ae?m(ae,ee,s[4]):ee,i[4]=ae?_(i[3],j):s[4]}return(ee=s[5])&&(ae=i[5],i[5]=ae?v(ae,ee,s[6]):ee,i[6]=ae?_(i[5],j):s[6]),(ee=s[7])&&(i[7]=ee),W&M&&(i[8]=null==i[8]?s[8]:$(i[8],s[8])),null==i[9]&&(i[9]=s[9]),i[0]=s[0],i[1]=X,i}},89250:(i,s,u)=>{var m=u(70577),v=m&&new m;i.exports=v},94536:(i,s,u)=>{var m=u(10852)(Object,"create");i.exports=m},86916:(i,s,u)=>{var m=u(5569)(Object.keys,Object);i.exports=m},33498:i=>{i.exports=function nativeKeysIn(i){var s=[];if(null!=i)for(var u in Object(i))s.push(u);return s}},31167:(i,s,u)=>{i=u.nmd(i);var m=u(31957),v=s&&!s.nodeType&&s,_=v&&i&&!i.nodeType&&i,j=_&&_.exports===v&&m.process,M=function(){try{var i=_&&_.require&&_.require("util").types;return i||j&&j.binding&&j.binding("util")}catch(i){}}();i.exports=M},2333:i=>{var s=Object.prototype.toString;i.exports=function objectToString(i){return s.call(i)}},5569:i=>{i.exports=function overArg(i,s){return function(u){return i(s(u))}}},45357:(i,s,u)=>{var m=u(96874),v=Math.max;i.exports=function overRest(i,s,u){return s=v(void 0===s?i.length-1:s,0),function(){for(var _=arguments,j=-1,M=v(_.length-s,0),$=Array(M);++j{var m=u(97786),v=u(14259);i.exports=function parent(i,s){return s.length<2?i:m(i,v(s,0,-1))}},52060:i=>{i.exports={}},90451:(i,s,u)=>{var m=u(278),v=u(65776),_=Math.min;i.exports=function reorder(i,s){for(var u=i.length,j=_(s.length,u),M=m(i);j--;){var $=s[j];i[j]=v($,u)?M[$]:void 0}return i}},46460:i=>{var s="__lodash_placeholder__";i.exports=function replaceHolders(i,u){for(var m=-1,v=i.length,_=0,j=[];++m{var m=u(31957),v="object"==typeof self&&self&&self.Object===Object&&self,_=m||v||Function("return this")();i.exports=_},36390:i=>{i.exports=function safeGet(i,s){if(("constructor"!==s||"function"!=typeof i[s])&&"__proto__"!=s)return i[s]}},90619:i=>{i.exports=function setCacheAdd(i){return this.__data__.set(i,"__lodash_hash_undefined__"),this}},72385:i=>{i.exports=function setCacheHas(i){return this.__data__.has(i)}},258:(i,s,u)=>{var m=u(28045),v=u(21275)(m);i.exports=v},21814:i=>{i.exports=function setToArray(i){var s=-1,u=Array(i.size);return i.forEach((function(i){u[++s]=i})),u}},30061:(i,s,u)=>{var m=u(56560),v=u(21275)(m);i.exports=v},69255:(i,s,u)=>{var m=u(58775),v=u(83112),_=u(30061),j=u(87241);i.exports=function setWrapToString(i,s,u){var M=s+"";return _(i,v(M,j(m(M),u)))}},21275:i=>{var s=Date.now;i.exports=function shortOut(i){var u=0,m=0;return function(){var v=s(),_=16-(v-m);if(m=v,_>0){if(++u>=800)return arguments[0]}else u=0;return i.apply(void 0,arguments)}}},37465:(i,s,u)=>{var m=u(38407);i.exports=function stackClear(){this.__data__=new m,this.size=0}},63779:i=>{i.exports=function stackDelete(i){var s=this.__data__,u=s.delete(i);return this.size=s.size,u}},67599:i=>{i.exports=function stackGet(i){return this.__data__.get(i)}},44758:i=>{i.exports=function stackHas(i){return this.__data__.has(i)}},34309:(i,s,u)=>{var m=u(38407),v=u(57071),_=u(83369);i.exports=function stackSet(i,s){var u=this.__data__;if(u instanceof m){var j=u.__data__;if(!v||j.length<199)return j.push([i,s]),this.size=++u.size,this;u=this.__data__=new _(j)}return u.set(i,s),this.size=u.size,this}},42351:i=>{i.exports=function strictIndexOf(i,s,u){for(var m=u-1,v=i.length;++m{var m=u(44286),v=u(62689),_=u(676);i.exports=function stringToArray(i){return v(i)?_(i):m(i)}},55514:(i,s,u)=>{var m=u(24523),v=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_=/\\(\\)?/g,j=m((function(i){var s=[];return 46===i.charCodeAt(0)&&s.push(""),i.replace(v,(function(i,u,m,v){s.push(m?v.replace(_,"$1"):u||i)})),s}));i.exports=j},40327:(i,s,u)=>{var m=u(33448);i.exports=function toKey(i){if("string"==typeof i||m(i))return i;var s=i+"";return"0"==s&&1/i==-Infinity?"-0":s}},80346:i=>{var s=Function.prototype.toString;i.exports=function toSource(i){if(null!=i){try{return s.call(i)}catch(i){}try{return i+""}catch(i){}}return""}},67990:i=>{var s=/\s/;i.exports=function trimmedEndIndex(i){for(var u=i.length;u--&&s.test(i.charAt(u)););return u}},676:i=>{var s="\\ud800-\\udfff",u="["+s+"]",m="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",v="\\ud83c[\\udffb-\\udfff]",_="[^"+s+"]",j="(?:\\ud83c[\\udde6-\\uddff]){2}",M="[\\ud800-\\udbff][\\udc00-\\udfff]",$="(?:"+m+"|"+v+")"+"?",W="[\\ufe0e\\ufe0f]?",X=W+$+("(?:\\u200d(?:"+[_,j,M].join("|")+")"+W+$+")*"),Y="(?:"+[_+m+"?",m,j,M,u].join("|")+")",Z=RegExp(v+"(?="+v+")|"+Y+X,"g");i.exports=function unicodeToArray(i){return i.match(Z)||[]}},2757:i=>{var s="\\ud800-\\udfff",u="\\u2700-\\u27bf",m="a-z\\xdf-\\xf6\\xf8-\\xff",v="A-Z\\xc0-\\xd6\\xd8-\\xde",_="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",j="["+_+"]",M="\\d+",$="["+u+"]",W="["+m+"]",X="[^"+s+_+M+u+m+v+"]",Y="(?:\\ud83c[\\udde6-\\uddff]){2}",Z="[\\ud800-\\udbff][\\udc00-\\udfff]",ee="["+v+"]",ae="(?:"+W+"|"+X+")",ie="(?:"+ee+"|"+X+")",le="(?:['’](?:d|ll|m|re|s|t|ve))?",ce="(?:['’](?:D|LL|M|RE|S|T|VE))?",pe="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",de="[\\ufe0e\\ufe0f]?",fe=de+pe+("(?:\\u200d(?:"+["[^"+s+"]",Y,Z].join("|")+")"+de+pe+")*"),ye="(?:"+[$,Y,Z].join("|")+")"+fe,be=RegExp([ee+"?"+W+"+"+le+"(?="+[j,ee,"$"].join("|")+")",ie+"+"+ce+"(?="+[j,ee+ae,"$"].join("|")+")",ee+"?"+ae+"+"+le,ee+"+"+ce,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",M,ye].join("|"),"g");i.exports=function unicodeWords(i){return i.match(be)||[]}},87241:(i,s,u)=>{var m=u(77412),v=u(47443),_=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];i.exports=function updateWrapDetails(i,s){return m(_,(function(u){var m="_."+u[0];s&u[1]&&!v(i,m)&&i.push(m)})),i.sort()}},21913:(i,s,u)=>{var m=u(96425),v=u(7548),_=u(278);i.exports=function wrapperClone(i){if(i instanceof m)return i.clone();var s=new v(i.__wrapped__,i.__chain__);return s.__actions__=_(i.__actions__),s.__index__=i.__index__,s.__values__=i.__values__,s}},39514:(i,s,u)=>{var m=u(97727);i.exports=function ary(i,s,u){return s=u?void 0:s,s=i&&null==s?i.length:s,m(i,128,void 0,void 0,void 0,void 0,s)}},68929:(i,s,u)=>{var m=u(48403),v=u(35393)((function(i,s,u){return s=s.toLowerCase(),i+(u?m(s):s)}));i.exports=v},48403:(i,s,u)=>{var m=u(79833),v=u(11700);i.exports=function capitalize(i){return v(m(i).toLowerCase())}},66678:(i,s,u)=>{var m=u(85990);i.exports=function clone(i){return m(i,4)}},75703:i=>{i.exports=function constant(i){return function(){return i}}},40087:(i,s,u)=>{var m=u(97727);function curry(i,s,u){var v=m(i,8,void 0,void 0,void 0,void 0,void 0,s=u?void 0:s);return v.placeholder=curry.placeholder,v}curry.placeholder={},i.exports=curry},23279:(i,s,u)=>{var m=u(13218),v=u(7771),_=u(14841),j=Math.max,M=Math.min;i.exports=function debounce(i,s,u){var $,W,X,Y,Z,ee,ae=0,ie=!1,le=!1,ce=!0;if("function"!=typeof i)throw new TypeError("Expected a function");function invokeFunc(s){var u=$,m=W;return $=W=void 0,ae=s,Y=i.apply(m,u)}function shouldInvoke(i){var u=i-ee;return void 0===ee||u>=s||u<0||le&&i-ae>=X}function timerExpired(){var i=v();if(shouldInvoke(i))return trailingEdge(i);Z=setTimeout(timerExpired,function remainingWait(i){var u=s-(i-ee);return le?M(u,X-(i-ae)):u}(i))}function trailingEdge(i){return Z=void 0,ce&&$?invokeFunc(i):($=W=void 0,Y)}function debounced(){var i=v(),u=shouldInvoke(i);if($=arguments,W=this,ee=i,u){if(void 0===Z)return function leadingEdge(i){return ae=i,Z=setTimeout(timerExpired,s),ie?invokeFunc(i):Y}(ee);if(le)return clearTimeout(Z),Z=setTimeout(timerExpired,s),invokeFunc(ee)}return void 0===Z&&(Z=setTimeout(timerExpired,s)),Y}return s=_(s)||0,m(u)&&(ie=!!u.leading,X=(le="maxWait"in u)?j(_(u.maxWait)||0,s):X,ce="trailing"in u?!!u.trailing:ce),debounced.cancel=function cancel(){void 0!==Z&&clearTimeout(Z),ae=0,$=ee=W=Z=void 0},debounced.flush=function flush(){return void 0===Z?Y:trailingEdge(v())},debounced}},53816:(i,s,u)=>{var m=u(69389),v=u(79833),_=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,j=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");i.exports=function deburr(i){return(i=v(i))&&i.replace(_,m).replace(j,"")}},77813:i=>{i.exports=function eq(i,s){return i===s||i!=i&&s!=s}},13311:(i,s,u)=>{var m=u(67740)(u(30998));i.exports=m},30998:(i,s,u)=>{var m=u(41848),v=u(67206),_=u(40554),j=Math.max;i.exports=function findIndex(i,s,u){var M=null==i?0:i.length;if(!M)return-1;var $=null==u?0:_(u);return $<0&&($=j(M+$,0)),m(i,v(s,3),$)}},85564:(i,s,u)=>{var m=u(21078);i.exports=function flatten(i){return(null==i?0:i.length)?m(i,1):[]}},84599:(i,s,u)=>{var m=u(68836),v=u(69306),_=Array.prototype.push;function baseAry(i,s){return 2==s?function(s,u){return i(s,u)}:function(s){return i(s)}}function cloneArray(i){for(var s=i?i.length:0,u=Array(s);s--;)u[s]=i[s];return u}function wrapImmutable(i,s){return function(){var u=arguments.length;if(u){for(var m=Array(u);u--;)m[u]=arguments[u];var v=m[0]=s.apply(void 0,m);return i.apply(void 0,m),v}}}i.exports=function baseConvert(i,s,u,j){var M="function"==typeof s,$=s===Object(s);if($&&(j=u,u=s,s=void 0),null==u)throw new TypeError;j||(j={});var W={cap:!("cap"in j)||j.cap,curry:!("curry"in j)||j.curry,fixed:!("fixed"in j)||j.fixed,immutable:!("immutable"in j)||j.immutable,rearg:!("rearg"in j)||j.rearg},X=M?u:v,Y="curry"in j&&j.curry,Z="fixed"in j&&j.fixed,ee="rearg"in j&&j.rearg,ae=M?u.runInContext():void 0,ie=M?u:{ary:i.ary,assign:i.assign,clone:i.clone,curry:i.curry,forEach:i.forEach,isArray:i.isArray,isError:i.isError,isFunction:i.isFunction,isWeakMap:i.isWeakMap,iteratee:i.iteratee,keys:i.keys,rearg:i.rearg,toInteger:i.toInteger,toPath:i.toPath},le=ie.ary,ce=ie.assign,pe=ie.clone,de=ie.curry,fe=ie.forEach,ye=ie.isArray,be=ie.isError,_e=ie.isFunction,we=ie.isWeakMap,Se=ie.keys,xe=ie.rearg,Pe=ie.toInteger,Ie=ie.toPath,Te=Se(m.aryMethod),Re={castArray:function(i){return function(){var s=arguments[0];return ye(s)?i(cloneArray(s)):i.apply(void 0,arguments)}},iteratee:function(i){return function(){var s=arguments[1],u=i(arguments[0],s),m=u.length;return W.cap&&"number"==typeof s?(s=s>2?s-2:1,m&&m<=s?u:baseAry(u,s)):u}},mixin:function(i){return function(s){var u=this;if(!_e(u))return i(u,Object(s));var m=[];return fe(Se(s),(function(i){_e(s[i])&&m.push([i,u.prototype[i]])})),i(u,Object(s)),fe(m,(function(i){var s=i[1];_e(s)?u.prototype[i[0]]=s:delete u.prototype[i[0]]})),u}},nthArg:function(i){return function(s){var u=s<0?1:Pe(s)+1;return de(i(s),u)}},rearg:function(i){return function(s,u){var m=u?u.length:0;return de(i(s,u),m)}},runInContext:function(s){return function(u){return baseConvert(i,s(u),j)}}};function castCap(i,s){if(W.cap){var u=m.iterateeRearg[i];if(u)return function iterateeRearg(i,s){return overArg(i,(function(i){var u=s.length;return function baseArity(i,s){return 2==s?function(s,u){return i.apply(void 0,arguments)}:function(s){return i.apply(void 0,arguments)}}(xe(baseAry(i,u),s),u)}))}(s,u);var v=!M&&m.iterateeAry[i];if(v)return function iterateeAry(i,s){return overArg(i,(function(i){return"function"==typeof i?baseAry(i,s):i}))}(s,v)}return s}function castFixed(i,s,u){if(W.fixed&&(Z||!m.skipFixed[i])){var v=m.methodSpread[i],j=v&&v.start;return void 0===j?le(s,u):function flatSpread(i,s){return function(){for(var u=arguments.length,m=u-1,v=Array(u);u--;)v[u]=arguments[u];var j=v[s],M=v.slice(0,s);return j&&_.apply(M,j),s!=m&&_.apply(M,v.slice(s+1)),i.apply(this,M)}}(s,j)}return s}function castRearg(i,s,u){return W.rearg&&u>1&&(ee||!m.skipRearg[i])?xe(s,m.methodRearg[i]||m.aryRearg[u]):s}function cloneByPath(i,s){for(var u=-1,m=(s=Ie(s)).length,v=m-1,_=pe(Object(i)),j=_;null!=j&&++u1?de(s,u):s}(0,v=castCap(_,v),i),!1}})),!v})),v||(v=j),v==s&&(v=Y?de(v,1):function(){return s.apply(this,arguments)}),v.convert=createConverter(_,s),v.placeholder=s.placeholder=u,v}if(!$)return wrap(s,u,X);var qe=u,ze=[];return fe(Te,(function(i){fe(m.aryMethod[i],(function(i){var s=qe[m.remap[i]||i];s&&ze.push([i,wrap(i,s,qe)])}))})),fe(Se(qe),(function(i){var s=qe[i];if("function"==typeof s){for(var u=ze.length;u--;)if(ze[u][0]==i)return;s.convert=createConverter(i,s),ze.push([i,s])}})),fe(ze,(function(i){qe[i[0]]=i[1]})),qe.convert=function convertLib(i){return qe.runInContext.convert(i)(void 0)},qe.placeholder=qe,fe(Se(qe),(function(i){fe(m.realToAlias[i]||[],(function(s){qe[s]=qe[i]}))})),qe}},68836:(i,s)=>{s.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},s.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},s.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},s.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},s.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},s.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},s.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},s.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},s.realToAlias=function(){var i=Object.prototype.hasOwnProperty,u=s.aliasToReal,m={};for(var v in u){var _=u[v];i.call(m,_)?m[_].push(v):m[_]=[v]}return m}(),s.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},s.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},s.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},4269:(i,s,u)=>{i.exports={ary:u(39514),assign:u(44037),clone:u(66678),curry:u(40087),forEach:u(77412),isArray:u(1469),isError:u(64647),isFunction:u(23560),isWeakMap:u(81018),iteratee:u(72594),keys:u(280),rearg:u(4963),toInteger:u(40554),toPath:u(30084)}},72700:(i,s,u)=>{i.exports=u(28252)},92822:(i,s,u)=>{var m=u(84599),v=u(4269);i.exports=function convert(i,s,u){return m(v,i,s,u)}},69306:i=>{i.exports={}},28252:(i,s,u)=>{var m=u(92822)("set",u(36968));m.placeholder=u(69306),i.exports=m},27361:(i,s,u)=>{var m=u(97786);i.exports=function get(i,s,u){var v=null==i?void 0:m(i,s);return void 0===v?u:v}},79095:(i,s,u)=>{var m=u(13),v=u(222);i.exports=function hasIn(i,s){return null!=i&&v(i,s,m)}},6557:i=>{i.exports=function identity(i){return i}},35694:(i,s,u)=>{var m=u(9454),v=u(37005),_=Object.prototype,j=_.hasOwnProperty,M=_.propertyIsEnumerable,$=m(function(){return arguments}())?m:function(i){return v(i)&&j.call(i,"callee")&&!M.call(i,"callee")};i.exports=$},1469:i=>{var s=Array.isArray;i.exports=s},98612:(i,s,u)=>{var m=u(23560),v=u(41780);i.exports=function isArrayLike(i){return null!=i&&v(i.length)&&!m(i)}},29246:(i,s,u)=>{var m=u(98612),v=u(37005);i.exports=function isArrayLikeObject(i){return v(i)&&m(i)}},51584:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isBoolean(i){return!0===i||!1===i||v(i)&&"[object Boolean]"==m(i)}},44144:(i,s,u)=>{i=u.nmd(i);var m=u(55639),v=u(95062),_=s&&!s.nodeType&&s,j=_&&i&&!i.nodeType&&i,M=j&&j.exports===_?m.Buffer:void 0,$=(M?M.isBuffer:void 0)||v;i.exports=$},41609:(i,s,u)=>{var m=u(280),v=u(64160),_=u(35694),j=u(1469),M=u(98612),$=u(44144),W=u(25726),X=u(36719),Y=Object.prototype.hasOwnProperty;i.exports=function isEmpty(i){if(null==i)return!0;if(M(i)&&(j(i)||"string"==typeof i||"function"==typeof i.splice||$(i)||X(i)||_(i)))return!i.length;var s=v(i);if("[object Map]"==s||"[object Set]"==s)return!i.size;if(W(i))return!m(i).length;for(var u in i)if(Y.call(i,u))return!1;return!0}},18446:(i,s,u)=>{var m=u(90939);i.exports=function isEqual(i,s){return m(i,s)}},64647:(i,s,u)=>{var m=u(44239),v=u(37005),_=u(68630);i.exports=function isError(i){if(!v(i))return!1;var s=m(i);return"[object Error]"==s||"[object DOMException]"==s||"string"==typeof i.message&&"string"==typeof i.name&&!_(i)}},23560:(i,s,u)=>{var m=u(44239),v=u(13218);i.exports=function isFunction(i){if(!v(i))return!1;var s=m(i);return"[object Function]"==s||"[object GeneratorFunction]"==s||"[object AsyncFunction]"==s||"[object Proxy]"==s}},41780:i=>{i.exports=function isLength(i){return"number"==typeof i&&i>-1&&i%1==0&&i<=9007199254740991}},56688:(i,s,u)=>{var m=u(25588),v=u(7518),_=u(31167),j=_&&_.isMap,M=j?v(j):m;i.exports=M},45220:i=>{i.exports=function isNull(i){return null===i}},81763:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isNumber(i){return"number"==typeof i||v(i)&&"[object Number]"==m(i)}},13218:i=>{i.exports=function isObject(i){var s=typeof i;return null!=i&&("object"==s||"function"==s)}},37005:i=>{i.exports=function isObjectLike(i){return null!=i&&"object"==typeof i}},68630:(i,s,u)=>{var m=u(44239),v=u(85924),_=u(37005),j=Function.prototype,M=Object.prototype,$=j.toString,W=M.hasOwnProperty,X=$.call(Object);i.exports=function isPlainObject(i){if(!_(i)||"[object Object]"!=m(i))return!1;var s=v(i);if(null===s)return!0;var u=W.call(s,"constructor")&&s.constructor;return"function"==typeof u&&u instanceof u&&$.call(u)==X}},72928:(i,s,u)=>{var m=u(29221),v=u(7518),_=u(31167),j=_&&_.isSet,M=j?v(j):m;i.exports=M},47037:(i,s,u)=>{var m=u(44239),v=u(1469),_=u(37005);i.exports=function isString(i){return"string"==typeof i||!v(i)&&_(i)&&"[object String]"==m(i)}},33448:(i,s,u)=>{var m=u(44239),v=u(37005);i.exports=function isSymbol(i){return"symbol"==typeof i||v(i)&&"[object Symbol]"==m(i)}},36719:(i,s,u)=>{var m=u(38749),v=u(7518),_=u(31167),j=_&&_.isTypedArray,M=j?v(j):m;i.exports=M},81018:(i,s,u)=>{var m=u(64160),v=u(37005);i.exports=function isWeakMap(i){return v(i)&&"[object WeakMap]"==m(i)}},72594:(i,s,u)=>{var m=u(85990),v=u(67206);i.exports=function iteratee(i){return v("function"==typeof i?i:m(i,1))}},3674:(i,s,u)=>{var m=u(14636),v=u(280),_=u(98612);i.exports=function keys(i){return _(i)?m(i):v(i)}},81704:(i,s,u)=>{var m=u(14636),v=u(10313),_=u(98612);i.exports=function keysIn(i){return _(i)?m(i,!0):v(i)}},10928:i=>{i.exports=function last(i){var s=null==i?0:i.length;return s?i[s-1]:void 0}},88306:(i,s,u)=>{var m=u(83369);function memoize(i,s){if("function"!=typeof i||null!=s&&"function"!=typeof s)throw new TypeError("Expected a function");var memoized=function(){var u=arguments,m=s?s.apply(this,u):u[0],v=memoized.cache;if(v.has(m))return v.get(m);var _=i.apply(this,u);return memoized.cache=v.set(m,_)||v,_};return memoized.cache=new(memoize.Cache||m),memoized}memoize.Cache=m,i.exports=memoize},82492:(i,s,u)=>{var m=u(42980),v=u(21463)((function(i,s,u){m(i,s,u)}));i.exports=v},94885:i=>{i.exports=function negate(i){if("function"!=typeof i)throw new TypeError("Expected a function");return function(){var s=arguments;switch(s.length){case 0:return!i.call(this);case 1:return!i.call(this,s[0]);case 2:return!i.call(this,s[0],s[1]);case 3:return!i.call(this,s[0],s[1],s[2])}return!i.apply(this,s)}}},50308:i=>{i.exports=function noop(){}},7771:(i,s,u)=>{var m=u(55639);i.exports=function(){return m.Date.now()}},57557:(i,s,u)=>{var m=u(29932),v=u(85990),_=u(57406),j=u(71811),M=u(98363),$=u(60696),W=u(99021),X=u(46904),Y=W((function(i,s){var u={};if(null==i)return u;var W=!1;s=m(s,(function(s){return s=j(s,i),W||(W=s.length>1),s})),M(i,X(i),u),W&&(u=v(u,7,$));for(var Y=s.length;Y--;)_(u,s[Y]);return u}));i.exports=Y},39601:(i,s,u)=>{var m=u(40371),v=u(79152),_=u(15403),j=u(40327);i.exports=function property(i){return _(i)?m(j(i)):v(i)}},4963:(i,s,u)=>{var m=u(97727),v=u(99021),_=v((function(i,s){return m(i,256,void 0,void 0,void 0,s)}));i.exports=_},54061:(i,s,u)=>{var m=u(62663),v=u(89881),_=u(67206),j=u(10107),M=u(1469);i.exports=function reduce(i,s,u){var $=M(i)?m:j,W=arguments.length<3;return $(i,_(s,4),u,W,v)}},36968:(i,s,u)=>{var m=u(10611);i.exports=function set(i,s,u){return null==i?i:m(i,s,u)}},59704:(i,s,u)=>{var m=u(82908),v=u(67206),_=u(5076),j=u(1469),M=u(16612);i.exports=function some(i,s,u){var $=j(i)?m:_;return u&&M(i,s,u)&&(s=void 0),$(i,v(s,3))}},70479:i=>{i.exports=function stubArray(){return[]}},95062:i=>{i.exports=function stubFalse(){return!1}},18601:(i,s,u)=>{var m=u(14841),v=1/0;i.exports=function toFinite(i){return i?(i=m(i))===v||i===-1/0?17976931348623157e292*(i<0?-1:1):i==i?i:0:0===i?i:0}},40554:(i,s,u)=>{var m=u(18601);i.exports=function toInteger(i){var s=m(i),u=s%1;return s==s?u?s-u:s:0}},7334:(i,s,u)=>{var m=u(79833);i.exports=function toLower(i){return m(i).toLowerCase()}},14841:(i,s,u)=>{var m=u(27561),v=u(13218),_=u(33448),j=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,$=/^0o[0-7]+$/i,W=parseInt;i.exports=function toNumber(i){if("number"==typeof i)return i;if(_(i))return NaN;if(v(i)){var s="function"==typeof i.valueOf?i.valueOf():i;i=v(s)?s+"":s}if("string"!=typeof i)return 0===i?i:+i;i=m(i);var u=M.test(i);return u||$.test(i)?W(i.slice(2),u?2:8):j.test(i)?NaN:+i}},30084:(i,s,u)=>{var m=u(29932),v=u(278),_=u(1469),j=u(33448),M=u(55514),$=u(40327),W=u(79833);i.exports=function toPath(i){return _(i)?m(i,$):j(i)?[i]:v(M(W(i)))}},59881:(i,s,u)=>{var m=u(98363),v=u(81704);i.exports=function toPlainObject(i){return m(i,v(i))}},79833:(i,s,u)=>{var m=u(80531);i.exports=function toString(i){return null==i?"":m(i)}},11700:(i,s,u)=>{var m=u(98805)("toUpperCase");i.exports=m},58748:(i,s,u)=>{var m=u(49029),v=u(93157),_=u(79833),j=u(2757);i.exports=function words(i,s,u){return i=_(i),void 0===(s=u?void 0:s)?v(i)?j(i):m(i):i.match(s)||[]}},8111:(i,s,u)=>{var m=u(96425),v=u(7548),_=u(9435),j=u(1469),M=u(37005),$=u(21913),W=Object.prototype.hasOwnProperty;function lodash(i){if(M(i)&&!j(i)&&!(i instanceof m)){if(i instanceof v)return i;if(W.call(i,"__wrapped__"))return $(i)}return new v(i)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,i.exports=lodash},7287:(i,s,u)=>{var m=u(34865),v=u(1757);i.exports=function zipObject(i,s){return v(i||[],s||[],m)}},96470:(i,s,u)=>{"use strict";var m=u(47802),v=u(21102);s.highlight=highlight,s.highlightAuto=function highlightAuto(i,s){var u,j,M,$,W=s||{},X=W.subset||m.listLanguages(),Y=W.prefix,Z=X.length,ee=-1;null==Y&&(Y=_);if("string"!=typeof i)throw v("Expected `string` for value, got `%s`",i);j={relevance:0,language:null,value:[]},u={relevance:0,language:null,value:[]};for(;++eej.relevance&&(j=M),M.relevance>u.relevance&&(j=u,u=M));j.language&&(u.secondBest=j);return u},s.registerLanguage=function registerLanguage(i,s){m.registerLanguage(i,s)},s.listLanguages=function listLanguages(){return m.listLanguages()},s.registerAlias=function registerAlias(i,s){var u,v=i;s&&((v={})[i]=s);for(u in v)m.registerAliases(v[u],{languageName:u})},Emitter.prototype.addText=function text(i){var s,u,m=this.stack;if(""===i)return;s=m[m.length-1],(u=s.children[s.children.length-1])&&"text"===u.type?u.value+=i:s.children.push({type:"text",value:i})},Emitter.prototype.addKeyword=function addKeyword(i,s){this.openNode(s),this.addText(i),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(i,s){var u=this.stack,m=u[u.length-1],v=i.rootNode.children,_=s?{type:"element",tagName:"span",properties:{className:[s]},children:v}:v;m.children=m.children.concat(_)},Emitter.prototype.openNode=function open(i){var s=this.stack,u=this.options.classPrefix+i,m=s[s.length-1],v={type:"element",tagName:"span",properties:{className:[u]},children:[]};m.children.push(v),s.push(v)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return""};var _="hljs-";function highlight(i,s,u){var j,M=m.configure({}),$=(u||{}).prefix;if("string"!=typeof i)throw v("Expected `string` for name, got `%s`",i);if(!m.getLanguage(i))throw v("Unknown language: `%s` is not registered",i);if("string"!=typeof s)throw v("Expected `string` for value, got `%s`",s);if(null==$&&($=_),m.configure({__emitter:Emitter,classPrefix:$}),j=m.highlight(s,{language:i,ignoreIllegals:!0}),m.configure(M||{}),j.errorRaised)throw j.errorRaised;return{relevance:j.relevance,language:j.language,value:j.emitter.rootNode.children}}function Emitter(i){this.options=i,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},42566:(i,s,u)=>{const m=u(94885);function coerceElementMatchingCallback(i){return"string"==typeof i?s=>s.element===i:i.constructor&&i.extend?s=>s instanceof i:i}class ArraySlice{constructor(i){this.elements=i||[]}toValue(){return this.elements.map((i=>i.toValue()))}map(i,s){return this.elements.map(i,s)}flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(m);v&&u.push(v)})),u}filter(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(this.elements.filter(i,s))}reject(i,s){return i=coerceElementMatchingCallback(i),new ArraySlice(this.elements.filter(m(i),s))}find(i,s){return i=coerceElementMatchingCallback(i),this.elements.find(i,s)}forEach(i,s){this.elements.forEach(i,s)}reduce(i,s){return this.elements.reduce(i,s)}includes(i){return this.elements.some((s=>s.equals(i)))}shift(){return this.elements.shift()}unshift(i){this.elements.unshift(this.refract(i))}push(i){return this.elements.push(this.refract(i)),this}add(i){this.push(i)}get(i){return this.elements[i]}getValue(i){const s=this.elements[i];if(s)return s.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}"undefined"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),i.exports=ArraySlice},17645:i=>{class KeyValuePair{constructor(i,s){this.key=i,this.value=s}clone(){const i=new KeyValuePair;return this.key&&(i.key=this.key.clone()),this.value&&(i.value=this.value.clone()),i}}i.exports=KeyValuePair},78520:(i,s,u)=>{const m=u(45220),v=u(47037),_=u(81763),j=u(51584),M=u(13218),$=u(28219),W=u(99829);class Namespace{constructor(i){this.elementMap={},this.elementDetection=[],this.Element=W.Element,this.KeyValuePair=W.KeyValuePair,i&&i.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(i){return i.namespace&&i.namespace({base:this}),i.load&&i.load({base:this}),this}useDefault(){return this.register("null",W.NullElement).register("string",W.StringElement).register("number",W.NumberElement).register("boolean",W.BooleanElement).register("array",W.ArrayElement).register("object",W.ObjectElement).register("member",W.MemberElement).register("ref",W.RefElement).register("link",W.LinkElement),this.detect(m,W.NullElement,!1).detect(v,W.StringElement,!1).detect(_,W.NumberElement,!1).detect(j,W.BooleanElement,!1).detect(Array.isArray,W.ArrayElement,!1).detect(M,W.ObjectElement,!1),this}register(i,s){return this._elements=void 0,this.elementMap[i]=s,this}unregister(i){return this._elements=void 0,delete this.elementMap[i],this}detect(i,s,u){return void 0===u||u?this.elementDetection.unshift([i,s]):this.elementDetection.push([i,s]),this}toElement(i){if(i instanceof this.Element)return i;let s;for(let u=0;u{const s=i[0].toUpperCase()+i.substr(1);this._elements[s]=this.elementMap[i]}))),this._elements}get serialiser(){return new $(this)}}$.prototype.Namespace=Namespace,i.exports=Namespace},87526:(i,s,u)=>{const m=u(94885),v=u(42566);class ObjectSlice extends v{map(i,s){return this.elements.map((u=>i.bind(s)(u.value,u.key,u)))}filter(i,s){return new ObjectSlice(this.elements.filter((u=>i.bind(s)(u.value,u.key,u))))}reject(i,s){return this.filter(m(i.bind(s)))}forEach(i,s){return this.elements.forEach(((u,m)=>{i.bind(s)(u.value,u.key,u,m)}))}keys(){return this.map(((i,s)=>s.toValue()))}values(){return this.map((i=>i.toValue()))}}i.exports=ObjectSlice},99829:(i,s,u)=>{const m=u(3079),v=u(96295),_=u(16036),j=u(91090),M=u(18866),$=u(35804),W=u(5946),X=u(76735),Y=u(59964),Z=u(38588),ee=u(42566),ae=u(87526),ie=u(17645);function refract(i){if(i instanceof m)return i;if("string"==typeof i)return new _(i);if("number"==typeof i)return new j(i);if("boolean"==typeof i)return new M(i);if(null===i)return new v;if(Array.isArray(i))return new $(i.map(refract));if("object"==typeof i){return new X(i)}return i}m.prototype.ObjectElement=X,m.prototype.RefElement=Z,m.prototype.MemberElement=W,m.prototype.refract=refract,ee.prototype.refract=refract,i.exports={Element:m,NullElement:v,StringElement:_,NumberElement:j,BooleanElement:M,ArrayElement:$,MemberElement:W,ObjectElement:X,LinkElement:Y,RefElement:Z,refract,ArraySlice:ee,ObjectSlice:ae,KeyValuePair:ie}},59964:(i,s,u)=>{const m=u(3079);i.exports=class LinkElement extends m{constructor(i,s,u){super(i||[],s,u),this.element="link"}get relation(){return this.attributes.get("relation")}set relation(i){this.attributes.set("relation",i)}get href(){return this.attributes.get("href")}set href(i){this.attributes.set("href",i)}}},38588:(i,s,u)=>{const m=u(3079);i.exports=class RefElement extends m{constructor(i,s,u){super(i||[],s,u),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(i){this.attributes.set("path",i)}}},43500:(i,s,u)=>{const m=u(78520),v=u(99829);s.lS=m,u(17645),s.O4=v.ArraySlice,v.ObjectSlice,s.W_=v.Element,s.RP=v.StringElement,s.VL=v.NumberElement,s.hh=v.BooleanElement,s.zr=v.NullElement,s.ON=v.ArrayElement,s.Sb=v.ObjectElement,s.c6=v.MemberElement,s.tK=v.RefElement,s.EA=v.LinkElement,s.Qc=v.refract,u(28219),u(3414)},35804:(i,s,u)=>{const m=u(94885),v=u(3079),_=u(42566);class ArrayElement extends v{constructor(i,s,u){super(i||[],s,u),this.element="array"}primitive(){return"array"}get(i){return this.content[i]}getValue(i){const s=this.get(i);if(s)return s.toValue()}getIndex(i){return this.content[i]}set(i,s){return this.content[i]=this.refract(s),this}remove(i){const s=this.content.splice(i,1);return s.length?s[0]:null}map(i,s){return this.content.map(i,s)}flatMap(i,s){return this.map(i,s).reduce(((i,s)=>i.concat(s)),[])}compactMap(i,s){const u=[];return this.forEach((m=>{const v=i.bind(s)(m);v&&u.push(v)})),u}filter(i,s){return new _(this.content.filter(i,s))}reject(i,s){return this.filter(m(i),s)}reduce(i,s){let u,m;void 0!==s?(u=0,m=this.refract(s)):(u=1,m="object"===this.primitive()?this.first.value:this.first);for(let s=u;s{i.bind(s)(u,this.refract(m))}))}shift(){return this.content.shift()}unshift(i){this.content.unshift(this.refract(i))}push(i){return this.content.push(this.refract(i)),this}add(i){this.push(i)}findElements(i,s){const u=s||{},m=!!u.recursive,v=void 0===u.results?[]:u.results;return this.forEach(((s,u,_)=>{m&&void 0!==s.findElements&&s.findElements(i,{results:v,recursive:m}),i(s,u,_)&&v.push(s)})),v}find(i){return new _(this.findElements(i,{recursive:!0}))}findByElement(i){return this.find((s=>s.element===i))}findByClass(i){return this.find((s=>s.classes.includes(i)))}getById(i){return this.find((s=>s.id.toValue()===i)).first}includes(i){return this.content.some((s=>s.equals(i)))}contains(i){return this.includes(i)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(i){return new this.constructor(this.content.concat(i.content))}"fantasy-land/concat"(i){return this.concat(i)}"fantasy-land/map"(i){return new this.constructor(this.map(i))}"fantasy-land/chain"(i){return this.map((s=>i(s)),this).reduce(((i,s)=>i.concat(s)),this.empty())}"fantasy-land/filter"(i){return new this.constructor(this.content.filter(i))}"fantasy-land/reduce"(i,s){return this.content.reduce(i,s)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),i.exports=ArrayElement},18866:(i,s,u)=>{const m=u(3079);i.exports=class BooleanElement extends m{constructor(i,s,u){super(i,s,u),this.element="boolean"}primitive(){return"boolean"}}},3079:(i,s,u)=>{const m=u(18446),v=u(17645),_=u(42566);class Element{constructor(i,s,u){s&&(this.meta=s),u&&(this.attributes=u),this.content=i}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((i=>{i.parent=this,i.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const i=new this.constructor;return i.element=this.element,this.meta.length&&(i._meta=this.meta.clone()),this.attributes.length&&(i._attributes=this.attributes.clone()),this.content?this.content.clone?i.content=this.content.clone():Array.isArray(this.content)?i.content=this.content.map((i=>i.clone())):i.content=this.content:i.content=this.content,i}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof v?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((i=>i.toValue()),this):this.content}toRef(i){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const s=new this.RefElement(this.id.toValue());return i&&(s.path=i),s}findRecursive(...i){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const s=i.pop();let u=new _;const append=(i,s)=>(i.push(s),i),checkElement=(i,u)=>{u.element===s&&i.push(u);const m=u.findRecursive(s);return m&&m.reduce(append,i),u.content instanceof v&&(u.content.key&&checkElement(i,u.content.key),u.content.value&&checkElement(i,u.content.value)),i};return this.content&&(this.content.element&&checkElement(u,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,u)),i.isEmpty||(u=u.filter((s=>{let u=s.parents.map((i=>i.element));for(const s in i){const m=i[s],v=u.indexOf(m);if(-1===v)return!1;u=u.splice(0,v)}return!0}))),u}set(i){return this.content=i,this}equals(i){return m(this.toValue(),i)}getMetaProperty(i,s){if(!this.meta.hasKey(i)){if(this.isFrozen){const i=this.refract(s);return i.freeze(),i}this.meta.set(i,s)}return this.meta.get(i)}setMetaProperty(i,s){this.meta.set(i,s)}get element(){return this._storedElement||"element"}set element(i){this._storedElement=i}get content(){return this._content}set content(i){if(i instanceof Element)this._content=i;else if(i instanceof _)this.content=i.elements;else if("string"==typeof i||"number"==typeof i||"boolean"==typeof i||"null"===i||null==i)this._content=i;else if(i instanceof v)this._content=i;else if(Array.isArray(i))this._content=i.map(this.refract);else{if("object"!=typeof i)throw new Error("Cannot set content to given value");this._content=Object.keys(i).map((s=>new this.MemberElement(s,i[s])))}}get meta(){if(!this._meta){if(this.isFrozen){const i=new this.ObjectElement;return i.freeze(),i}this._meta=new this.ObjectElement}return this._meta}set meta(i){i instanceof this.ObjectElement?this._meta=i:this.meta.set(i||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const i=new this.ObjectElement;return i.freeze(),i}this._attributes=new this.ObjectElement}return this._attributes}set attributes(i){i instanceof this.ObjectElement?this._attributes=i:this.attributes.set(i||{})}get id(){return this.getMetaProperty("id","")}set id(i){this.setMetaProperty("id",i)}get classes(){return this.getMetaProperty("classes",[])}set classes(i){this.setMetaProperty("classes",i)}get title(){return this.getMetaProperty("title","")}set title(i){this.setMetaProperty("title",i)}get description(){return this.getMetaProperty("description","")}set description(i){this.setMetaProperty("description",i)}get links(){return this.getMetaProperty("links",[])}set links(i){this.setMetaProperty("links",i)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:i}=this;const s=new _;for(;i;)s.push(i),i=i.parent;return s}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof v){const i=new _([this.content.key]);return this.content.value&&i.push(this.content.value),i}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const i=new _;return this.children.forEach((s=>{i.push(s),s.recursiveChildren.forEach((s=>{i.push(s)}))})),i}}i.exports=Element},5946:(i,s,u)=>{const m=u(17645),v=u(3079);i.exports=class MemberElement extends v{constructor(i,s,u,v){super(new m,u,v),this.element="member",this.key=i,this.value=s}get key(){return this.content.key}set key(i){this.content.key=this.refract(i)}get value(){return this.content.value}set value(i){this.content.value=this.refract(i)}}},96295:(i,s,u)=>{const m=u(3079);i.exports=class NullElement extends m{constructor(i,s,u){super(i||null,s,u),this.element="null"}primitive(){return"null"}set(){return new Error("Cannot set the value of null")}}},91090:(i,s,u)=>{const m=u(3079);i.exports=class NumberElement extends m{constructor(i,s,u){super(i,s,u),this.element="number"}primitive(){return"number"}}},76735:(i,s,u)=>{const m=u(94885),v=u(13218),_=u(35804),j=u(5946),M=u(87526);i.exports=class ObjectElement extends _{constructor(i,s,u){super(i||[],s,u),this.element="object"}primitive(){return"object"}toValue(){return this.content.reduce(((i,s)=>(i[s.key.toValue()]=s.value?s.value.toValue():void 0,i)),{})}get(i){const s=this.getMember(i);if(s)return s.value}getMember(i){if(void 0!==i)return this.content.find((s=>s.key.toValue()===i))}remove(i){let s=null;return this.content=this.content.filter((u=>u.key.toValue()!==i||(s=u,!1))),s}getKey(i){const s=this.getMember(i);if(s)return s.key}set(i,s){if(v(i))return Object.keys(i).forEach((s=>{this.set(s,i[s])})),this;const u=i,m=this.getMember(u);return m?m.value=s:this.content.push(new j(u,s)),this}keys(){return this.content.map((i=>i.key.toValue()))}values(){return this.content.map((i=>i.value.toValue()))}hasKey(i){return this.content.some((s=>s.key.equals(i)))}items(){return this.content.map((i=>[i.key.toValue(),i.value.toValue()]))}map(i,s){return this.content.map((u=>i.bind(s)(u.value,u.key,u)))}compactMap(i,s){const u=[];return this.forEach(((m,v,_)=>{const j=i.bind(s)(m,v,_);j&&u.push(j)})),u}filter(i,s){return new M(this.content).filter(i,s)}reject(i,s){return this.filter(m(i),s)}forEach(i,s){return this.content.forEach((u=>i.bind(s)(u.value,u.key,u)))}}},16036:(i,s,u)=>{const m=u(3079);i.exports=class StringElement extends m{constructor(i,s,u){super(i,s,u),this.element="string"}primitive(){return"string"}get length(){return this.content.length}}},3414:(i,s,u)=>{const m=u(28219);i.exports=class JSON06Serialiser extends m{serialise(i){if(!(i instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${i}\` is not an Element instance`);let s;i._attributes&&i.attributes.get("variable")&&(s=i.attributes.get("variable"));const u={element:i.element};i._meta&&i._meta.length>0&&(u.meta=this.serialiseObject(i.meta));const m="enum"===i.element||-1!==i.attributes.keys().indexOf("enumerations");if(m){const s=this.enumSerialiseAttributes(i);s&&(u.attributes=s)}else if(i._attributes&&i._attributes.length>0){let{attributes:m}=i;m.get("metadata")&&(m=m.clone(),m.set("meta",m.get("metadata")),m.remove("metadata")),"member"===i.element&&s&&(m=m.clone(),m.remove("variable")),m.length>0&&(u.attributes=this.serialiseObject(m))}if(m)u.content=this.enumSerialiseContent(i,u);else if(this[`${i.element}SerialiseContent`])u.content=this[`${i.element}SerialiseContent`](i,u);else if(void 0!==i.content){let m;s&&i.content.key?(m=i.content.clone(),m.key.attributes.set("variable",s),m=this.serialiseContent(m)):m=this.serialiseContent(i.content),this.shouldSerialiseContent(i,m)&&(u.content=m)}else this.shouldSerialiseContent(i,i.content)&&i instanceof this.namespace.elements.Array&&(u.content=[]);return u}shouldSerialiseContent(i,s){return"parseResult"===i.element||"httpRequest"===i.element||"httpResponse"===i.element||"category"===i.element||"link"===i.element||void 0!==s&&(!Array.isArray(s)||0!==s.length)}refSerialiseContent(i,s){return delete s.attributes,{href:i.toValue(),path:i.path.toValue()}}sourceMapSerialiseContent(i){return i.toValue()}dataStructureSerialiseContent(i){return[this.serialiseContent(i.content)]}enumSerialiseAttributes(i){const s=i.attributes.clone(),u=s.remove("enumerations")||new this.namespace.elements.Array([]),m=s.get("default");let v=s.get("samples")||new this.namespace.elements.Array([]);if(m&&m.content&&(m.content.attributes&&m.content.attributes.remove("typeAttributes"),s.set("default",new this.namespace.elements.Array([m.content]))),v.forEach((i=>{i.content&&i.content.element&&i.content.attributes.remove("typeAttributes")})),i.content&&0!==u.length&&v.unshift(i.content),v=v.map((i=>i instanceof this.namespace.elements.Array?[i]:new this.namespace.elements.Array([i.content]))),v.length&&s.set("samples",v),s.length>0)return this.serialiseObject(s)}enumSerialiseContent(i){if(i._attributes){const s=i.attributes.get("enumerations");if(s&&s.length>0)return s.content.map((i=>{const s=i.clone();return s.attributes.remove("typeAttributes"),this.serialise(s)}))}if(i.content){const s=i.content.clone();return s.attributes.remove("typeAttributes"),[this.serialise(s)]}return[]}deserialise(i){if("string"==typeof i)return new this.namespace.elements.String(i);if("number"==typeof i)return new this.namespace.elements.Number(i);if("boolean"==typeof i)return new this.namespace.elements.Boolean(i);if(null===i)return new this.namespace.elements.Null;if(Array.isArray(i))return new this.namespace.elements.Array(i.map(this.deserialise,this));const s=this.namespace.getElementClass(i.element),u=new s;u.element!==i.element&&(u.element=i.element),i.meta&&this.deserialiseObject(i.meta,u.meta),i.attributes&&this.deserialiseObject(i.attributes,u.attributes);const m=this.deserialiseContent(i.content);if(void 0===m&&null!==u.content||(u.content=m),"enum"===u.element){u.content&&u.attributes.set("enumerations",u.content);let i=u.attributes.get("samples");if(u.attributes.remove("samples"),i){const m=i;i=new this.namespace.elements.Array,m.forEach((m=>{m.forEach((m=>{const v=new s(m);v.element=u.element,i.push(v)}))}));const v=i.shift();u.content=v?v.content:void 0,u.attributes.set("samples",i)}else u.content=void 0;let m=u.attributes.get("default");if(m&&m.length>0){m=m.get(0);const i=new s(m);i.element=u.element,u.attributes.set("default",i)}}else if("dataStructure"===u.element&&Array.isArray(u.content))[u.content]=u.content;else if("category"===u.element){const i=u.attributes.get("meta");i&&(u.attributes.set("metadata",i),u.attributes.remove("meta"))}else"member"===u.element&&u.key&&u.key._attributes&&u.key._attributes.getValue("variable")&&(u.attributes.set("variable",u.key.attributes.get("variable")),u.key.attributes.remove("variable"));return u}serialiseContent(i){if(i instanceof this.namespace.elements.Element)return this.serialise(i);if(i instanceof this.namespace.KeyValuePair){const s={key:this.serialise(i.key)};return i.value&&(s.value=this.serialise(i.value)),s}return i&&i.map?i.map(this.serialise,this):i}deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i.key){const s=new this.namespace.KeyValuePair(this.deserialise(i.key));return i.value&&(s.value=this.deserialise(i.value)),s}if(i.map)return i.map(this.deserialise,this)}return i}shouldRefract(i){return!!(i._attributes&&i.attributes.keys().length||i._meta&&i.meta.keys().length)||"enum"!==i.element&&(i.element!==i.primitive()||"member"===i.element)}convertKeyToRefract(i,s){return this.shouldRefract(s)?this.serialise(s):"enum"===s.element?this.serialiseEnum(s):"array"===s.element?s.map((s=>this.shouldRefract(s)||"default"===i?this.serialise(s):"array"===s.element||"object"===s.element||"enum"===s.element?s.children.map((i=>this.serialise(i))):s.toValue())):"object"===s.element?(s.content||[]).map(this.serialise,this):s.toValue()}serialiseEnum(i){return i.children.map((i=>this.serialise(i)))}serialiseObject(i){const s={};return i.forEach(((i,u)=>{if(i){const m=u.toValue();s[m]=this.convertKeyToRefract(m,i)}})),s}deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserialise(i[u]))}))}}},28219:i=>{i.exports=class JSONSerialiser{constructor(i){this.namespace=i||new this.Namespace}serialise(i){if(!(i instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${i}\` is not an Element instance`);const s={element:i.element};i._meta&&i._meta.length>0&&(s.meta=this.serialiseObject(i.meta)),i._attributes&&i._attributes.length>0&&(s.attributes=this.serialiseObject(i.attributes));const u=this.serialiseContent(i.content);return void 0!==u&&(s.content=u),s}deserialise(i){if(!i.element)throw new Error("Given value is not an object containing an element name");const s=new(this.namespace.getElementClass(i.element));s.element!==i.element&&(s.element=i.element),i.meta&&this.deserialiseObject(i.meta,s.meta),i.attributes&&this.deserialiseObject(i.attributes,s.attributes);const u=this.deserialiseContent(i.content);return void 0===u&&null!==s.content||(s.content=u),s}serialiseContent(i){if(i instanceof this.namespace.elements.Element)return this.serialise(i);if(i instanceof this.namespace.KeyValuePair){const s={key:this.serialise(i.key)};return i.value&&(s.value=this.serialise(i.value)),s}if(i&&i.map){if(0===i.length)return;return i.map(this.serialise,this)}return i}deserialiseContent(i){if(i){if(i.element)return this.deserialise(i);if(i.key){const s=new this.namespace.KeyValuePair(this.deserialise(i.key));return i.value&&(s.value=this.deserialise(i.value)),s}if(i.map)return i.map(this.deserialise,this)}return i}serialiseObject(i){const s={};if(i.forEach(((i,u)=>{i&&(s[u.toValue()]=this.serialise(i))})),0!==Object.keys(s).length)return s}deserialiseObject(i,s){Object.keys(i).forEach((u=>{s.set(u,this.deserialise(i[u]))}))}}},27418:i=>{"use strict";var s=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable;i.exports=function shouldUseNative(){try{if(!Object.assign)return!1;var i=new String("abc");if(i[5]="de","5"===Object.getOwnPropertyNames(i)[0])return!1;for(var s={},u=0;u<10;u++)s["_"+String.fromCharCode(u)]=u;if("0123456789"!==Object.getOwnPropertyNames(s).map((function(i){return s[i]})).join(""))return!1;var m={};return"abcdefghijklmnopqrst".split("").forEach((function(i){m[i]=i})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},m)).join("")}catch(i){return!1}}()?Object.assign:function(i,v){for(var _,j,M=function toObject(i){if(null==i)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(i)}(i),$=1;${var m="function"==typeof Map&&Map.prototype,v=Object.getOwnPropertyDescriptor&&m?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,_=m&&v&&"function"==typeof v.get?v.get:null,j=m&&Map.prototype.forEach,M="function"==typeof Set&&Set.prototype,$=Object.getOwnPropertyDescriptor&&M?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,W=M&&$&&"function"==typeof $.get?$.get:null,X=M&&Set.prototype.forEach,Y="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Z="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,ee="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,ae=Boolean.prototype.valueOf,ie=Object.prototype.toString,le=Function.prototype.toString,ce=String.prototype.match,pe=String.prototype.slice,de=String.prototype.replace,fe=String.prototype.toUpperCase,ye=String.prototype.toLowerCase,be=RegExp.prototype.test,_e=Array.prototype.concat,we=Array.prototype.join,Se=Array.prototype.slice,xe=Math.floor,Pe="function"==typeof BigInt?BigInt.prototype.valueOf:null,Ie=Object.getOwnPropertySymbols,Te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Re="function"==typeof Symbol&&"object"==typeof Symbol.iterator,qe="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Re||"symbol")?Symbol.toStringTag:null,ze=Object.prototype.propertyIsEnumerable,Ve=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(i){return i.__proto__}:null);function addNumericSeparator(i,s){if(i===1/0||i===-1/0||i!=i||i&&i>-1e3&&i<1e3||be.call(/e/,s))return s;var u=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof i){var m=i<0?-xe(-i):xe(i);if(m!==i){var v=String(m),_=pe.call(s,v.length+1);return de.call(v,u,"$&_")+"."+de.call(de.call(_,/([0-9]{3})/g,"$&_"),/_$/,"")}}return de.call(s,u,"$&_")}var We=u(24654),He=We.custom,Xe=isSymbol(He)?He:null;function wrapQuotes(i,s,u){var m="double"===(u.quoteStyle||s)?'"':"'";return m+i+m}function quote(i){return de.call(String(i),/"/g,""")}function isArray(i){return!("[object Array]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}function isRegExp(i){return!("[object RegExp]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}function isSymbol(i){if(Re)return i&&"object"==typeof i&&i instanceof Symbol;if("symbol"==typeof i)return!0;if(!i||"object"!=typeof i||!Te)return!1;try{return Te.call(i),!0}catch(i){}return!1}i.exports=function inspect_(i,s,u,m){var v=s||{};if(has(v,"quoteStyle")&&"single"!==v.quoteStyle&&"double"!==v.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(v,"maxStringLength")&&("number"==typeof v.maxStringLength?v.maxStringLength<0&&v.maxStringLength!==1/0:null!==v.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var M=!has(v,"customInspect")||v.customInspect;if("boolean"!=typeof M&&"symbol"!==M)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(v,"indent")&&null!==v.indent&&"\t"!==v.indent&&!(parseInt(v.indent,10)===v.indent&&v.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(v,"numericSeparator")&&"boolean"!=typeof v.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var $=v.numericSeparator;if(void 0===i)return"undefined";if(null===i)return"null";if("boolean"==typeof i)return i?"true":"false";if("string"==typeof i)return inspectString(i,v);if("number"==typeof i){if(0===i)return 1/0/i>0?"0":"-0";var ie=String(i);return $?addNumericSeparator(i,ie):ie}if("bigint"==typeof i){var fe=String(i)+"n";return $?addNumericSeparator(i,fe):fe}var be=void 0===v.depth?5:v.depth;if(void 0===u&&(u=0),u>=be&&be>0&&"object"==typeof i)return isArray(i)?"[Array]":"[Object]";var xe=function getIndent(i,s){var u;if("\t"===i.indent)u="\t";else{if(!("number"==typeof i.indent&&i.indent>0))return null;u=we.call(Array(i.indent+1)," ")}return{base:u,prev:we.call(Array(s+1),u)}}(v,u);if(void 0===m)m=[];else if(indexOf(m,i)>=0)return"[Circular]";function inspect(i,s,_){if(s&&(m=Se.call(m)).push(s),_){var j={depth:v.depth};return has(v,"quoteStyle")&&(j.quoteStyle=v.quoteStyle),inspect_(i,j,u+1,m)}return inspect_(i,v,u+1,m)}if("function"==typeof i&&!isRegExp(i)){var Ie=function nameOf(i){if(i.name)return i.name;var s=ce.call(le.call(i),/^function\s*([\w$]+)/);if(s)return s[1];return null}(i),He=arrObjKeys(i,inspect);return"[Function"+(Ie?": "+Ie:" (anonymous)")+"]"+(He.length>0?" { "+we.call(He,", ")+" }":"")}if(isSymbol(i)){var Ye=Re?de.call(String(i),/^(Symbol\(.*\))_[^)]*$/,"$1"):Te.call(i);return"object"!=typeof i||Re?Ye:markBoxed(Ye)}if(function isElement(i){if(!i||"object"!=typeof i)return!1;if("undefined"!=typeof HTMLElement&&i instanceof HTMLElement)return!0;return"string"==typeof i.nodeName&&"function"==typeof i.getAttribute}(i)){for(var Qe="<"+ye.call(String(i.nodeName)),et=i.attributes||[],tt=0;tt"}if(isArray(i)){if(0===i.length)return"[]";var rt=arrObjKeys(i,inspect);return xe&&!function singleLineValues(i){for(var s=0;s=0)return!1;return!0}(rt)?"["+indentedJoin(rt,xe)+"]":"[ "+we.call(rt,", ")+" ]"}if(function isError(i){return!("[object Error]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i)){var nt=arrObjKeys(i,inspect);return"cause"in Error.prototype||!("cause"in i)||ze.call(i,"cause")?0===nt.length?"["+String(i)+"]":"{ ["+String(i)+"] "+we.call(nt,", ")+" }":"{ ["+String(i)+"] "+we.call(_e.call("[cause]: "+inspect(i.cause),nt),", ")+" }"}if("object"==typeof i&&M){if(Xe&&"function"==typeof i[Xe]&&We)return We(i,{depth:be-u});if("symbol"!==M&&"function"==typeof i.inspect)return i.inspect()}if(function isMap(i){if(!_||!i||"object"!=typeof i)return!1;try{_.call(i);try{W.call(i)}catch(i){return!0}return i instanceof Map}catch(i){}return!1}(i)){var ot=[];return j&&j.call(i,(function(s,u){ot.push(inspect(u,i,!0)+" => "+inspect(s,i))})),collectionOf("Map",_.call(i),ot,xe)}if(function isSet(i){if(!W||!i||"object"!=typeof i)return!1;try{W.call(i);try{_.call(i)}catch(i){return!0}return i instanceof Set}catch(i){}return!1}(i)){var at=[];return X&&X.call(i,(function(s){at.push(inspect(s,i))})),collectionOf("Set",W.call(i),at,xe)}if(function isWeakMap(i){if(!Y||!i||"object"!=typeof i)return!1;try{Y.call(i,Y);try{Z.call(i,Z)}catch(i){return!0}return i instanceof WeakMap}catch(i){}return!1}(i))return weakCollectionOf("WeakMap");if(function isWeakSet(i){if(!Z||!i||"object"!=typeof i)return!1;try{Z.call(i,Z);try{Y.call(i,Y)}catch(i){return!0}return i instanceof WeakSet}catch(i){}return!1}(i))return weakCollectionOf("WeakSet");if(function isWeakRef(i){if(!ee||!i||"object"!=typeof i)return!1;try{return ee.call(i),!0}catch(i){}return!1}(i))return weakCollectionOf("WeakRef");if(function isNumber(i){return!("[object Number]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(inspect(Number(i)));if(function isBigInt(i){if(!i||"object"!=typeof i||!Pe)return!1;try{return Pe.call(i),!0}catch(i){}return!1}(i))return markBoxed(inspect(Pe.call(i)));if(function isBoolean(i){return!("[object Boolean]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(ae.call(i));if(function isString(i){return!("[object String]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i))return markBoxed(inspect(String(i)));if(!function isDate(i){return!("[object Date]"!==toStr(i)||qe&&"object"==typeof i&&qe in i)}(i)&&!isRegExp(i)){var it=arrObjKeys(i,inspect),st=Ve?Ve(i)===Object.prototype:i instanceof Object||i.constructor===Object,lt=i instanceof Object?"":"null prototype",ct=!st&&qe&&Object(i)===i&&qe in i?pe.call(toStr(i),8,-1):lt?"Object":"",ut=(st||"function"!=typeof i.constructor?"":i.constructor.name?i.constructor.name+" ":"")+(ct||lt?"["+we.call(_e.call([],ct||[],lt||[]),": ")+"] ":"");return 0===it.length?ut+"{}":xe?ut+"{"+indentedJoin(it,xe)+"}":ut+"{ "+we.call(it,", ")+" }"}return String(i)};var Ye=Object.prototype.hasOwnProperty||function(i){return i in this};function has(i,s){return Ye.call(i,s)}function toStr(i){return ie.call(i)}function indexOf(i,s){if(i.indexOf)return i.indexOf(s);for(var u=0,m=i.length;us.maxStringLength){var u=i.length-s.maxStringLength,m="... "+u+" more character"+(u>1?"s":"");return inspectString(pe.call(i,0,s.maxStringLength),s)+m}return wrapQuotes(de.call(de.call(i,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",s)}function lowbyte(i){var s=i.charCodeAt(0),u={8:"b",9:"t",10:"n",12:"f",13:"r"}[s];return u?"\\"+u:"\\x"+(s<16?"0":"")+fe.call(s.toString(16))}function markBoxed(i){return"Object("+i+")"}function weakCollectionOf(i){return i+" { ? }"}function collectionOf(i,s,u,m){return i+" ("+s+") {"+(m?indentedJoin(u,m):we.call(u,", "))+"}"}function indentedJoin(i,s){if(0===i.length)return"";var u="\n"+s.prev+s.base;return u+we.call(i,","+u)+"\n"+s.prev}function arrObjKeys(i,s){var u=isArray(i),m=[];if(u){m.length=i.length;for(var v=0;v{var s,u,m=i.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(i){if(s===setTimeout)return setTimeout(i,0);if((s===defaultSetTimout||!s)&&setTimeout)return s=setTimeout,setTimeout(i,0);try{return s(i,0)}catch(u){try{return s.call(null,i,0)}catch(u){return s.call(this,i,0)}}}!function(){try{s="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(i){s=defaultSetTimout}try{u="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(i){u=defaultClearTimeout}}();var v,_=[],j=!1,M=-1;function cleanUpNextTick(){j&&v&&(j=!1,v.length?_=v.concat(_):M=-1,_.length&&drainQueue())}function drainQueue(){if(!j){var i=runTimeout(cleanUpNextTick);j=!0;for(var s=_.length;s;){for(v=_,_=[];++M1)for(var u=1;u{"use strict";var m=u(50414);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,i.exports=function(){function shim(i,s,u,v,_,j){if(j!==m){var M=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw M.name="Invariant Violation",M}}function getShim(){return shim}shim.isRequired=shim;var i={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return i.PropTypes=i,i}},45697:(i,s,u)=>{i.exports=u(92703)()},50414:i=>{"use strict";i.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},55798:i=>{"use strict";var s=String.prototype.replace,u=/%20/g,m="RFC1738",v="RFC3986";i.exports={default:v,formatters:{RFC1738:function(i){return s.call(i,u,"+")},RFC3986:function(i){return String(i)}},RFC1738:m,RFC3986:v}},80129:(i,s,u)=>{"use strict";var m=u(58261),v=u(55235),_=u(55798);i.exports={formats:_,parse:v,stringify:m}},55235:(i,s,u)=>{"use strict";var m=u(12769),v=Object.prototype.hasOwnProperty,_=Array.isArray,j={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:m.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(i){return i.replace(/&#(\d+);/g,(function(i,s){return String.fromCharCode(parseInt(s,10))}))},parseArrayValue=function(i,s){return i&&"string"==typeof i&&s.comma&&i.indexOf(",")>-1?i.split(","):i},M=function parseQueryStringKeys(i,s,u,m){if(i){var _=u.allowDots?i.replace(/\.([^.[]+)/g,"[$1]"):i,j=/(\[[^[\]]*])/g,M=u.depth>0&&/(\[[^[\]]*])/.exec(_),$=M?_.slice(0,M.index):_,W=[];if($){if(!u.plainObjects&&v.call(Object.prototype,$)&&!u.allowPrototypes)return;W.push($)}for(var X=0;u.depth>0&&null!==(M=j.exec(_))&&X=0;--_){var j,M=i[_];if("[]"===M&&u.parseArrays)j=[].concat(v);else{j=u.plainObjects?Object.create(null):{};var $="["===M.charAt(0)&&"]"===M.charAt(M.length-1)?M.slice(1,-1):M,W=parseInt($,10);u.parseArrays||""!==$?!isNaN(W)&&M!==$&&String(W)===$&&W>=0&&u.parseArrays&&W<=u.arrayLimit?(j=[])[W]=v:"__proto__"!==$&&(j[$]=v):j={0:v}}v=j}return v}(W,s,u,m)}};i.exports=function(i,s){var u=function normalizeParseOptions(i){if(!i)return j;if(null!==i.decoder&&void 0!==i.decoder&&"function"!=typeof i.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==i.charset&&"utf-8"!==i.charset&&"iso-8859-1"!==i.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var s=void 0===i.charset?j.charset:i.charset;return{allowDots:void 0===i.allowDots?j.allowDots:!!i.allowDots,allowPrototypes:"boolean"==typeof i.allowPrototypes?i.allowPrototypes:j.allowPrototypes,allowSparse:"boolean"==typeof i.allowSparse?i.allowSparse:j.allowSparse,arrayLimit:"number"==typeof i.arrayLimit?i.arrayLimit:j.arrayLimit,charset:s,charsetSentinel:"boolean"==typeof i.charsetSentinel?i.charsetSentinel:j.charsetSentinel,comma:"boolean"==typeof i.comma?i.comma:j.comma,decoder:"function"==typeof i.decoder?i.decoder:j.decoder,delimiter:"string"==typeof i.delimiter||m.isRegExp(i.delimiter)?i.delimiter:j.delimiter,depth:"number"==typeof i.depth||!1===i.depth?+i.depth:j.depth,ignoreQueryPrefix:!0===i.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof i.interpretNumericEntities?i.interpretNumericEntities:j.interpretNumericEntities,parameterLimit:"number"==typeof i.parameterLimit?i.parameterLimit:j.parameterLimit,parseArrays:!1!==i.parseArrays,plainObjects:"boolean"==typeof i.plainObjects?i.plainObjects:j.plainObjects,strictNullHandling:"boolean"==typeof i.strictNullHandling?i.strictNullHandling:j.strictNullHandling}}(s);if(""===i||null==i)return u.plainObjects?Object.create(null):{};for(var $="string"==typeof i?function parseQueryStringValues(i,s){var u,M={},$=s.ignoreQueryPrefix?i.replace(/^\?/,""):i,W=s.parameterLimit===1/0?void 0:s.parameterLimit,X=$.split(s.delimiter,W),Y=-1,Z=s.charset;if(s.charsetSentinel)for(u=0;u-1&&(ae=_(ae)?[ae]:ae),v.call(M,ee)?M[ee]=m.combine(M[ee],ae):M[ee]=ae}return M}(i,u):i,W=u.plainObjects?Object.create(null):{},X=Object.keys($),Y=0;Y{"use strict";var m=u(37478),v=u(12769),_=u(55798),j=Object.prototype.hasOwnProperty,M={brackets:function brackets(i){return i+"[]"},comma:"comma",indices:function indices(i,s){return i+"["+s+"]"},repeat:function repeat(i){return i}},$=Array.isArray,W=String.prototype.split,X=Array.prototype.push,pushToArray=function(i,s){X.apply(i,$(s)?s:[s])},Y=Date.prototype.toISOString,Z=_.default,ee={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:v.encode,encodeValuesOnly:!1,format:Z,formatter:_.formatters[Z],indices:!1,serializeDate:function serializeDate(i){return Y.call(i)},skipNulls:!1,strictNullHandling:!1},ae={},ie=function stringify(i,s,u,_,j,M,X,Y,Z,ie,le,ce,pe,de,fe,ye){for(var be=i,_e=ye,we=0,Se=!1;void 0!==(_e=_e.get(ae))&&!Se;){var xe=_e.get(i);if(we+=1,void 0!==xe){if(xe===we)throw new RangeError("Cyclic object value");Se=!0}void 0===_e.get(ae)&&(we=0)}if("function"==typeof Y?be=Y(s,be):be instanceof Date?be=le(be):"comma"===u&&$(be)&&(be=v.maybeMap(be,(function(i){return i instanceof Date?le(i):i}))),null===be){if(j)return X&&!de?X(s,ee.encoder,fe,"key",ce):s;be=""}if(function isNonNullishPrimitive(i){return"string"==typeof i||"number"==typeof i||"boolean"==typeof i||"symbol"==typeof i||"bigint"==typeof i}(be)||v.isBuffer(be)){if(X){var Pe=de?s:X(s,ee.encoder,fe,"key",ce);if("comma"===u&&de){for(var Ie=W.call(String(be),","),Te="",Re=0;Re0?be.join(",")||null:void 0}];else if($(Y))qe=Y;else{var Ve=Object.keys(be);qe=Z?Ve.sort(Z):Ve}for(var We=_&&$(be)&&1===be.length?s+"[]":s,He=0;He0?fe+de:""}},12769:(i,s,u)=>{"use strict";var m=u(55798),v=Object.prototype.hasOwnProperty,_=Array.isArray,j=function(){for(var i=[],s=0;s<256;++s)i.push("%"+((s<16?"0":"")+s.toString(16)).toUpperCase());return i}(),M=function arrayToObject(i,s){for(var u=s&&s.plainObjects?Object.create(null):{},m=0;m1;){var s=i.pop(),u=s.obj[s.prop];if(_(u)){for(var m=[],v=0;v=48&&X<=57||X>=65&&X<=90||X>=97&&X<=122||_===m.RFC1738&&(40===X||41===X)?$+=M.charAt(W):X<128?$+=j[X]:X<2048?$+=j[192|X>>6]+j[128|63&X]:X<55296||X>=57344?$+=j[224|X>>12]+j[128|X>>6&63]+j[128|63&X]:(W+=1,X=65536+((1023&X)<<10|1023&M.charCodeAt(W)),$+=j[240|X>>18]+j[128|X>>12&63]+j[128|X>>6&63]+j[128|63&X])}return $},isBuffer:function isBuffer(i){return!(!i||"object"!=typeof i)&&!!(i.constructor&&i.constructor.isBuffer&&i.constructor.isBuffer(i))},isRegExp:function isRegExp(i){return"[object RegExp]"===Object.prototype.toString.call(i)},maybeMap:function maybeMap(i,s){if(_(i)){for(var u=[],m=0;m{"use strict";var u=Object.prototype.hasOwnProperty;function decode(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch(i){return null}}function encode(i){try{return encodeURIComponent(i)}catch(i){return null}}s.stringify=function querystringify(i,s){s=s||"";var m,v,_=[];for(v in"string"!=typeof s&&(s="?"),i)if(u.call(i,v)){if((m=i[v])||null!=m&&!isNaN(m)||(m=""),v=encode(v),m=encode(m),null===v||null===m)continue;_.push(v+"="+m)}return _.length?s+_.join("&"):""},s.parse=function querystring(i){for(var s,u=/([^=?#&]+)=?([^&]*)/g,m={};s=u.exec(i);){var v=decode(s[1]),_=decode(s[2]);null===v||null===_||v in m||(m[v]=_)}return m}},14419:(i,s,u)=>{const m=u(60697),v=u(69450),_=m.types;i.exports=class RandExp{constructor(i,s){if(this._setDefaults(i),i instanceof RegExp)this.ignoreCase=i.ignoreCase,this.multiline=i.multiline,i=i.source;else{if("string"!=typeof i)throw new Error("Expected a regexp or string");this.ignoreCase=s&&-1!==s.indexOf("i"),this.multiline=s&&-1!==s.indexOf("m")}this.tokens=m(i)}_setDefaults(i){this.max=null!=i.max?i.max:null!=RandExp.prototype.max?RandExp.prototype.max:100,this.defaultRange=i.defaultRange?i.defaultRange:this.defaultRange.clone(),i.randInt&&(this.randInt=i.randInt)}gen(){return this._gen(this.tokens,[])}_gen(i,s){var u,m,v,j,M;switch(i.type){case _.ROOT:case _.GROUP:if(i.followedBy||i.notFollowedBy)return"";for(i.remember&&void 0===i.groupNumber&&(i.groupNumber=s.push(null)-1),m="",j=0,M=(u=i.options?this._randSelect(i.options):i.stack).length;j{"use strict";var m=u(34155),v=65536,_=4294967295;var j=u(89509).Buffer,M=u.g.crypto||u.g.msCrypto;M&&M.getRandomValues?i.exports=function randomBytes(i,s){if(i>_)throw new RangeError("requested too many random bytes");var u=j.allocUnsafe(i);if(i>0)if(i>v)for(var $=0;${"use strict";function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(i){return typeof i}:function(i){return i&&"function"==typeof Symbol&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof(i)}Object.defineProperty(s,"__esModule",{value:!0}),s.CopyToClipboard=void 0;var m=_interopRequireDefault(u(67294)),v=_interopRequireDefault(u(20640)),_=["text","onCopy","options","children"];function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(i);s&&(m=m.filter((function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable}))),u.push.apply(u,m)}return u}function _objectSpread(i){for(var s=1;s=0||(v[u]=i[u]);return v}(i,s);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||Object.prototype.propertyIsEnumerable.call(i,u)&&(v[u]=i[u])}return v}function _defineProperties(i,s){for(var u=0;u{"use strict";var m=u(74300).CopyToClipboard;m.CopyToClipboard=m,i.exports=m},53441:(i,s,u)=>{"use strict";function _typeof(i){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(i){return typeof i}:function(i){return i&&"function"==typeof Symbol&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},_typeof(i)}Object.defineProperty(s,"__esModule",{value:!0}),s.DebounceInput=void 0;var m=_interopRequireDefault(u(67294)),v=_interopRequireDefault(u(91296)),_=["element","onChange","value","minLength","debounceTimeout","forceNotifyByEnter","forceNotifyOnBlur","onKeyDown","onBlur","inputRef"];function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}function _objectWithoutProperties(i,s){if(null==i)return{};var u,m,v=function _objectWithoutPropertiesLoose(i,s){if(null==i)return{};var u,m,v={},_=Object.keys(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||(v[u]=i[u]);return v}(i,s);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(i);for(m=0;m<_.length;m++)u=_[m],s.indexOf(u)>=0||Object.prototype.propertyIsEnumerable.call(i,u)&&(v[u]=i[u])}return v}function ownKeys(i,s){var u=Object.keys(i);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(i);s&&(m=m.filter((function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable}))),u.push.apply(u,m)}return u}function _objectSpread(i){for(var s=1;s=m?u.notify(i):s.length>v.length&&u.notify(_objectSpread(_objectSpread({},i),{},{target:_objectSpread(_objectSpread({},i.target),{},{value:""})}))}))})),_defineProperty(_assertThisInitialized(u),"onKeyDown",(function(i){"Enter"===i.key&&u.forceNotify(i);var s=u.props.onKeyDown;s&&(i.persist(),s(i))})),_defineProperty(_assertThisInitialized(u),"onBlur",(function(i){u.forceNotify(i);var s=u.props.onBlur;s&&(i.persist(),s(i))})),_defineProperty(_assertThisInitialized(u),"createNotifier",(function(i){if(i<0)u.notify=function(){return null};else if(0===i)u.notify=u.doNotify;else{var s=(0,v.default)((function(i){u.isDebouncing=!1,u.doNotify(i)}),i);u.notify=function(i){u.isDebouncing=!0,s(i)},u.flush=function(){return s.flush()},u.cancel=function(){u.isDebouncing=!1,s.cancel()}}})),_defineProperty(_assertThisInitialized(u),"doNotify",(function(){u.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(u),"forceNotify",(function(i){var s=u.props.debounceTimeout;if(u.isDebouncing||!(s>0)){u.cancel&&u.cancel();var m=u.state.value,v=u.props.minLength;m.length>=v?u.doNotify(i):u.doNotify(_objectSpread(_objectSpread({},i),{},{target:_objectSpread(_objectSpread({},i.target),{},{value:m})}))}})),u.isDebouncing=!1,u.state={value:void 0===i.value||null===i.value?"":i.value};var m=u.props.debounceTimeout;return u.createNotifier(m),u}return function _createClass(i,s,u){return s&&_defineProperties(i.prototype,s),u&&_defineProperties(i,u),Object.defineProperty(i,"prototype",{writable:!1}),i}(DebounceInput,[{key:"componentDidUpdate",value:function componentDidUpdate(i){if(!this.isDebouncing){var s=this.props,u=s.value,m=s.debounceTimeout,v=i.debounceTimeout,_=i.value,j=this.state.value;void 0!==u&&_!==u&&j!==u&&this.setState({value:u}),m!==v&&this.createNotifier(m)}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:"render",value:function render(){var i,s,u=this.props,v=u.element,j=(u.onChange,u.value,u.minLength,u.debounceTimeout,u.forceNotifyByEnter),M=u.forceNotifyOnBlur,$=u.onKeyDown,W=u.onBlur,X=u.inputRef,Y=_objectWithoutProperties(u,_),Z=this.state.value;i=j?{onKeyDown:this.onKeyDown}:$?{onKeyDown:$}:{},s=M?{onBlur:this.onBlur}:W?{onBlur:W}:{};var ee=X?{ref:X}:{};return m.default.createElement(v,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},Y),{},{onChange:this.onChange,value:Z},i),s),ee))}}]),DebounceInput}(m.default.PureComponent);s.DebounceInput=j,_defineProperty(j,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},775:(i,s,u)=>{"use strict";var m=u(53441).DebounceInput;m.DebounceInput=m,i.exports=m},64448:(i,s,u)=>{"use strict";var m=u(67294),v=u(27418),_=u(63840);function y(i){for(var s="https://reactjs.org/docs/error-decoder.html?invariant="+i,u=1;u